ESPO-03 ohne eigene Instanzpruefung: der Riegel liegt im Task
Die Pruefung auf vorhandene Container, docker-compose.yml und data/config.php entfaellt. Dass der Lauf nur an einer neuen Instanz stattfindet, stellt der Task ueber If/Then auf espo_zustand sicher. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
995ef4b461
commit
f90a142462
@ -2,8 +2,8 @@
|
|||||||
# ESPO-03-First-Deploy - richtet EspoCRM auf einer vorbereiteten VM zum ersten Mal ein.
|
# ESPO-03-First-Deploy - richtet EspoCRM auf einer vorbereiteten VM zum ersten Mal ein.
|
||||||
# Aufruf: ESPO-03-First-Deploy.sh <fqdn> <ring>
|
# Aufruf: ESPO-03-First-Deploy.sh <fqdn> <ring>
|
||||||
# Ob der Lauf erlaubt ist, entscheidet der Task selbst per If/Then auf espo_zustand.
|
# Ob der Lauf erlaubt ist, entscheidet der Task selbst per If/Then auf espo_zustand.
|
||||||
# Laeuft nur auf einer VM OHNE vorhandene Instanz. Fuer Aktualisierungen ist der Update-Weg zustaendig;
|
# Fuer Aktualisierungen ist der Update-Weg zustaendig. Dass dieser Lauf nur an einer neuen Instanz
|
||||||
# dieses Skript fasst eine bestehende Instanz nicht an, damit keine Migration ohne geprueftes Backup startet.
|
# stattfindet, stellt der Task sicher (If/Then auf espo_zustand), nicht das Skript.
|
||||||
set -u
|
set -u
|
||||||
|
|
||||||
# Standzeile: zeigt im Protokoll, welche Fassung tatsaechlich gelaufen ist.
|
# Standzeile: zeigt im Protokoll, welche Fassung tatsaechlich gelaufen ist.
|
||||||
@ -23,18 +23,11 @@ docker info >/dev/null 2>&1 || fehler "Docker laeuft nicht - erst ESPO-02 pruefe
|
|||||||
[ -n "$FQDN" ] || fehler "kein FQDN uebergeben"
|
[ -n "$FQDN" ] || fehler "kein FQDN uebergeben"
|
||||||
[ -n "$RING" ] || fehler "kein Ring uebergeben"
|
[ -n "$RING" ] || fehler "kein Ring uebergeben"
|
||||||
|
|
||||||
# 2. Sicherung gegen einen zweiten Lauf: Eine vorhandene Instanz ist eine Tatsache, kein Feldwert.
|
# 2. Verzeichnisse anlegen. Die Eigentuemer setzen die Images beim ersten Start selbst.
|
||||||
for C in espocrm espocrm-db espocrm-daemon espocrm-websocket; do
|
|
||||||
docker ps -a --format '{{.Names}}' | grep -qx "$C" && fehler "Container '$C' existiert bereits - hier ist der Update-Weg zustaendig"
|
|
||||||
done
|
|
||||||
[ -e /srv/espo/docker-compose.yml ] && fehler "/srv/espo/docker-compose.yml existiert bereits - hier ist der Update-Weg zustaendig"
|
|
||||||
[ -e /srv/espo/data/config.php ] && fehler "EspoCRM ist bereits installiert (data/config.php) - hier ist der Update-Weg zustaendig"
|
|
||||||
|
|
||||||
# 3. Verzeichnisse anlegen. Die Eigentuemer setzen die Images beim ersten Start selbst.
|
|
||||||
install -d -m 0755 /srv/espo /srv/espo/bin /srv/espo/mariadb /srv/espo/data /srv/espo/custom /srv/espo/client-custom
|
install -d -m 0755 /srv/espo /srv/espo/bin /srv/espo/mariadb /srv/espo/data /srv/espo/custom /srv/espo/client-custom
|
||||||
install -d -m 0700 /srv/espo/secrets
|
install -d -m 0700 /srv/espo/secrets
|
||||||
|
|
||||||
# 4. Geheimnisse auf der VM erzeugen - sie stehen in keinem Skript, keiner Ausgabe und keinem Repository.
|
# 3. Geheimnisse auf der VM erzeugen - sie stehen in keinem Skript, keiner Ausgabe und keinem Repository.
|
||||||
# Ohne abschliessenden Zeilenumbruch, damit die _FILE-Auswertung der Images genau diesen Wert sieht.
|
# Ohne abschliessenden Zeilenumbruch, damit die _FILE-Auswertung der Images genau diesen Wert sieht.
|
||||||
umask 077
|
umask 077
|
||||||
for G in db_root_password db_password; do
|
for G in db_root_password db_password; do
|
||||||
@ -44,18 +37,18 @@ for G in db_root_password db_password; do
|
|||||||
done
|
done
|
||||||
umask 022
|
umask 022
|
||||||
|
|
||||||
# 5. Grundeinstellungen bereitlegen, bevor EspoCRM zum ersten Mal startet.
|
# 4. Grundeinstellungen bereitlegen, bevor EspoCRM zum ersten Mal startet.
|
||||||
curl -fsSL "$BASIS_URL/docker/config-override.php" -o /srv/espo/data/config-override.php || fehler "config-override.php nicht abrufbar"
|
curl -fsSL "$BASIS_URL/docker/config-override.php" -o /srv/espo/data/config-override.php || fehler "config-override.php nicht abrufbar"
|
||||||
|
|
||||||
# 6. Compose aus dem Stand des Rings schreiben.
|
# 5. Compose aus dem Stand des Rings schreiben.
|
||||||
curl -fsSL "$BASIS_URL/bin/espo-compose-rendern" -o /srv/espo/bin/espo-compose-rendern || fehler "Render-Skript nicht abrufbar"
|
curl -fsSL "$BASIS_URL/bin/espo-compose-rendern" -o /srv/espo/bin/espo-compose-rendern || fehler "Render-Skript nicht abrufbar"
|
||||||
chmod 0755 /srv/espo/bin/espo-compose-rendern
|
chmod 0755 /srv/espo/bin/espo-compose-rendern
|
||||||
/srv/espo/bin/espo-compose-rendern "$FQDN" "$RING" || fehler "Compose konnte nicht geschrieben werden"
|
/srv/espo/bin/espo-compose-rendern "$FQDN" "$RING" || fehler "Compose konnte nicht geschrieben werden"
|
||||||
|
|
||||||
# 7. Starten. Die Images werden dabei zum ersten Mal geholt.
|
# 6. Starten. Die Images werden dabei zum ersten Mal geholt.
|
||||||
docker compose -f /srv/espo/docker-compose.yml up -d || fehler "Start fehlgeschlagen"
|
docker compose -f /srv/espo/docker-compose.yml up -d || fehler "Start fehlgeschlagen"
|
||||||
|
|
||||||
# 8. Auf die Anwendung warten. Der erste Lauf installiert und baut das Schema auf, das dauert.
|
# 7. Auf die Anwendung warten. Der erste Lauf installiert und baut das Schema auf, das dauert.
|
||||||
ENDE=$(( SECONDS + WARTE_MAX ))
|
ENDE=$(( SECONDS + WARTE_MAX ))
|
||||||
while [ "$SECONDS" -lt "$ENDE" ]; do
|
while [ "$SECONDS" -lt "$ENDE" ]; do
|
||||||
[ "$(docker inspect -f '{{.State.Health.Status}}' espocrm 2>/dev/null)" = "healthy" ] && break
|
[ "$(docker inspect -f '{{.State.Health.Status}}' espocrm 2>/dev/null)" = "healthy" ] && break
|
||||||
@ -64,7 +57,7 @@ done
|
|||||||
[ "$(docker inspect -f '{{.State.Health.Status}}' espocrm 2>/dev/null)" = "healthy" ] \
|
[ "$(docker inspect -f '{{.State.Health.Status}}' espocrm 2>/dev/null)" = "healthy" ] \
|
||||||
|| fehler "espocrm nach ${WARTE_MAX}s nicht gesund - 'docker logs espocrm' ansehen"
|
|| fehler "espocrm nach ${WARTE_MAX}s nicht gesund - 'docker logs espocrm' ansehen"
|
||||||
|
|
||||||
# 9. Ergebnis zeigen. Die Datenbankabfragen laufen im Container und lesen das Passwort dort aus der Secret-Datei,
|
# 8. Ergebnis zeigen. Die Datenbankabfragen laufen im Container und lesen das Passwort dort aus der Secret-Datei,
|
||||||
# damit es weder im Skript noch in der Prozessliste der VM auftaucht.
|
# damit es weder im Skript noch in der Prozessliste der VM auftaucht.
|
||||||
echo "--- Container"
|
echo "--- Container"
|
||||||
docker compose -f /srv/espo/docker-compose.yml ps --format 'table {{.Name}}\t{{.Status}}'
|
docker compose -f /srv/espo/docker-compose.yml ps --format 'table {{.Name}}\t{{.Status}}'
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user