Nummernkreise: Update-Block beginnt bei ESPO-10

Aus ESPO-04 und ESPO-05 werden ESPO-10 und ESPO-11. Ein Zehnerkreis
kennzeichnet den Block und beginnt bei x0; 0x bleibt der Weg von der leeren VM
zur laufenden Instanz, 1x das Aktualisieren, 2x Betrieb und Ueberwachung.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
gordon.zimm 2026-09-24 14:42:04 +02:00
parent 449627de30
commit c2b37dd8fa
3 changed files with 24 additions and 13 deletions

View File

@ -7,6 +7,17 @@ es steht deshalb **kein Passwort, kein Token und keine Kundenangabe** in diesem
|---|---| |---|---|
| `autoinstall/` | NoCloud-Seed für die Basis-VM (`user-data`, `meta-data`) | | `autoinstall/` | NoCloud-Seed für die Basis-VM (`user-data`, `meta-data`) |
| `rmm-tasks/` | Skripte, die als Task im ConnectWise RMM hinterlegt sind (Quelle für Änderungen) | | `rmm-tasks/` | Skripte, die als Task im ConnectWise RMM hinterlegt sind (Quelle für Änderungen) |
### Nummernkreise der Tasks
| Kreis | Bedeutung | bisher |
|---|---|---|
| `0x` | von der leeren VM zur laufenden Instanz | `01` Grundeinrichtung, `02` Docker, `03` First-Deploy |
| `1x` | aktualisieren | `10` Update, `11` Snapshot verwerfen, `12` Rückweg (geplant) |
| `2x` | Betrieb und Überwachung | `20` Inventar (geplant), `21` Backup-Prüfung (geplant) |
| `3x` | Extensions | geplant |
Ein Kreis beginnt bei `x0`. Die Liste im RMM sortiert alphabetisch, die Reihenfolge stimmt damit.
| `bin/` | Skripte, die auf der VM unter `/srv/espo/bin/` liegen und von Tasks aufgerufen werden | | `bin/` | Skripte, die auf der VM unter `/srv/espo/bin/` liegen und von Tasks aufgerufen werden |
| `docker/` | je Ring ein Ordner mit dem Stand dieses Rings: `docker-compose.yml` und `config-override.php` | | `docker/` | je Ring ein Ordner mit dem Stand dieses Rings: `docker-compose.yml` und `config-override.php` |

View File

@ -1,13 +1,13 @@
#!/bin/bash #!/bin/bash
# ESPO-04-Update - hebt EspoCRM auf den Stand des Rings, mit LVM-Snapshot als Rueckweg. # ESPO-10-Update - hebt EspoCRM auf den Stand des Rings, mit LVM-Snapshot als Rueckweg.
# Aufruf: ESPO-04-Update.sh <fqdn> <ring> # Aufruf: ESPO-10-Update.sh <fqdn> <ring>
# Ob der Lauf erlaubt ist, entscheidet der Task per If/Then auf espo_zustand (erwartet DEPLOYED). # Ob der Lauf erlaubt ist, entscheidet der Task per If/Then auf espo_zustand (erwartet DEPLOYED).
# Der Snapshot bleibt nach dem Lauf absichtlich bestehen - verworfen wird er erst durch ESPO-05, # Der Snapshot bleibt nach dem Lauf absichtlich bestehen - verworfen wird er erst durch ESPO-11,
# nachdem jemand geprueft hat, dass die Instanz nach dem Update noch richtig arbeitet. # nachdem jemand geprueft hat, dass die Instanz nach dem Update noch richtig arbeitet.
set -u set -u
# Standzeile: zeigt im Protokoll, welche Fassung tatsaechlich gelaufen ist. # Standzeile: zeigt im Protokoll, welche Fassung tatsaechlich gelaufen ist.
echo "ESPO-04-Update, Skriptstand 2026-09-24" echo "ESPO-10-Update, Skriptstand 2026-09-24"
BASIS_URL=https://gitea.subcura.net/EspoCRM_Public/espo-deploy/raw/branch/main BASIS_URL=https://gitea.subcura.net/EspoCRM_Public/espo-deploy/raw/branch/main
VG=ubuntu-vg VG=ubuntu-vg
@ -18,7 +18,7 @@ WARTE_MAX=900
FQDN="${1:-}" FQDN="${1:-}"
RING="${2:-}" RING="${2:-}"
fehler() { echo "FEHLER: $*"; echo "ESPO04_ERGEBNIS: FEHLER"; exit 1; } fehler() { echo "FEHLER: $*"; echo "ESPO10_ERGEBNIS: FEHLER"; exit 1; }
# 1. Vorbedingungen - lieber hier abbrechen als auf halbem Weg. # 1. Vorbedingungen - lieber hier abbrechen als auf halbem Weg.
[ "$(id -u)" -eq 0 ] || fehler "nicht als root gestartet" [ "$(id -u)" -eq 0 ] || fehler "nicht als root gestartet"
@ -31,7 +31,7 @@ command -v lvcreate >/dev/null || fehler "LVM-Werkzeuge fehlen"
# 2. Ein Snapshot aus einem frueheren Lauf heisst: Das vorige Update ist nicht bestaetigt. # 2. Ein Snapshot aus einem frueheren Lauf heisst: Das vorige Update ist nicht bestaetigt.
# Zwei Snapshots uebereinander waeren kein Rueckweg mehr, sondern ein Ratespiel. # Zwei Snapshots uebereinander waeren kein Rueckweg mehr, sondern ein Ratespiel.
if lvs --noheadings -o lv_name "$VG" 2>/dev/null | grep -qw "$SNAPSHOT"; then if lvs --noheadings -o lv_name "$VG" 2>/dev/null | grep -qw "$SNAPSHOT"; then
fehler "Snapshot '$SNAPSHOT' besteht noch - das vorige Update wurde nicht mit ESPO-05 abgeschlossen" fehler "Snapshot '$SNAPSHOT' besteht noch - das vorige Update wurde nicht mit ESPO-11 abgeschlossen"
fi fi
# 3. Ausgangsstand festhalten, damit der Bericht ein Vorher und ein Nachher hat. # 3. Ausgangsstand festhalten, damit der Bericht ein Vorher und ein Nachher hat.
@ -88,7 +88,7 @@ echo "Digest: $(docker image inspect --format '{{if .RepoDigests}}{{index .Repo
echo "--- Rueckweg" echo "--- Rueckweg"
lvs --noheadings -o lv_name,lv_attr,origin,data_percent "$VG/$SNAPSHOT" 2>/dev/null | sed 's/^ */ /' lvs --noheadings -o lv_name,lv_attr,origin,data_percent "$VG/$SNAPSHOT" 2>/dev/null | sed 's/^ */ /'
echo "--- Naechster Schritt von Hand" echo "--- Naechster Schritt von Hand"
echo "Instanz pruefen (Anmeldung, ein Datensatz, E-Mail, WebSocket). Erst danach ESPO-05 ausfuehren," echo "Instanz pruefen (Anmeldung, ein Datensatz, E-Mail, WebSocket). Erst danach ESPO-11 ausfuehren,"
echo "das den Snapshot verwirft. Solange er besteht, kostet jeder Schreibvorgang zusaetzliche Zeit," echo "das den Snapshot verwirft. Solange er besteht, kostet jeder Schreibvorgang zusaetzliche Zeit,"
echo "und laeuft er voll, verwirft LVM ihn stillschweigend - dann ist der Rueckweg weg." echo "und laeuft er voll, verwirft LVM ihn stillschweigend - dann ist der Rueckweg weg."
echo "ESPO04_ERGEBNIS: OK" echo "ESPO10_ERGEBNIS: OK"

View File

@ -1,17 +1,17 @@
#!/bin/bash #!/bin/bash
# ESPO-05-Snapshot-verwerfen - raeumt den Rueckweg weg, nachdem die Instanz von Hand geprueft wurde. # ESPO-11-Snapshot-verwerfen - raeumt den Rueckweg weg, nachdem die Instanz von Hand geprueft wurde.
# Aufruf: ohne Argumente. # Aufruf: ohne Argumente.
# Laeuft bewusst erst nach der Pruefung: Solange der Snapshot besteht, kostet jeder Schreibvorgang # Laeuft bewusst erst nach der Pruefung: Solange der Snapshot besteht, kostet jeder Schreibvorgang
# auf /srv einen zusaetzlichen Kopiervorgang, und ein vollgelaufener Snapshot wird still verworfen. # auf /srv einen zusaetzlichen Kopiervorgang, und ein vollgelaufener Snapshot wird still verworfen.
set -u set -u
# Standzeile: zeigt im Protokoll, welche Fassung tatsaechlich gelaufen ist. # Standzeile: zeigt im Protokoll, welche Fassung tatsaechlich gelaufen ist.
echo "ESPO-05-Snapshot-verwerfen, Skriptstand 2026-09-24" echo "ESPO-11-Snapshot-verwerfen, Skriptstand 2026-09-24"
VG=ubuntu-vg VG=ubuntu-vg
SNAPSHOT=srv-vor-update SNAPSHOT=srv-vor-update
fehler() { echo "FEHLER: $*"; echo "ESPO05_ERGEBNIS: FEHLER"; exit 1; } fehler() { echo "FEHLER: $*"; echo "ESPO11_ERGEBNIS: FEHLER"; exit 1; }
# 1. Vorbedingungen. # 1. Vorbedingungen.
[ "$(id -u)" -eq 0 ] || fehler "nicht als root gestartet" [ "$(id -u)" -eq 0 ] || fehler "nicht als root gestartet"
@ -20,7 +20,7 @@ command -v lvremove >/dev/null || fehler "LVM-Werkzeuge fehlen"
# 2. Ohne Snapshot gibt es nichts zu verwerfen - das ist kein Erfolg, sondern ein Hinweis: # 2. Ohne Snapshot gibt es nichts zu verwerfen - das ist kein Erfolg, sondern ein Hinweis:
# Entweder lief kein Update, oder der Snapshot ist bereits weg (auch stillschweigend, siehe 3). # Entweder lief kein Update, oder der Snapshot ist bereits weg (auch stillschweigend, siehe 3).
lvs --noheadings -o lv_name "$VG" 2>/dev/null | grep -qw "$SNAPSHOT" \ lvs --noheadings -o lv_name "$VG" 2>/dev/null | grep -qw "$SNAPSHOT" \
|| fehler "kein Snapshot '$SNAPSHOT' vorhanden - lief ESPO-04 ueberhaupt?" || fehler "kein Snapshot '$SNAPSHOT' vorhanden - lief ESPO-10 ueberhaupt?"
# 3. Zustand festhalten, bevor er verschwindet. Ein 'I' im Attributfeld heisst: bereits ungueltig, # 3. Zustand festhalten, bevor er verschwindet. Ein 'I' im Attributfeld heisst: bereits ungueltig,
# der Rueckweg haette also gar nicht mehr getragen. Das gehoert ins Protokoll. # der Rueckweg haette also gar nicht mehr getragen. Das gehoert ins Protokoll.
@ -40,4 +40,4 @@ lvs --noheadings -o lv_name "$VG" 2>/dev/null | grep -qw "$SNAPSHOT" \
echo "--- Danach" echo "--- Danach"
echo "Snapshot '$SNAPSHOT' verworfen." echo "Snapshot '$SNAPSHOT' verworfen."
vgs --units g -o vg_name,vg_size,vg_free "$VG" 2>/dev/null | sed 's/^/ /' vgs --units g -o vg_name,vg_size,vg_free "$VG" 2>/dev/null | sed 's/^/ /'
echo "ESPO05_ERGEBNIS: OK" echo "ESPO11_ERGEBNIS: OK"