Änderung ausrollen¶
Ziel¶
Deine Änderung an einem Host oder an DNS läuft auf dem Server bzw. bei deSEC und steht im Repo auf Codeberg.
Voraussetzungen¶
- dein Rechner ist eingerichtet (Arbeitsrechner einrichten)
- gelesen: Infrastructure as Code, Git-Workflow und syslet in diesem Repo
Die Schritte gelten für die Hosts (Ordner syslet/<host>/, mit syslet) und für DNS (Ordner desec/, mit desync).
Für Authentik gilt derselbe Ablauf mit Terraform; die Befehle stehen in Terraform ausführen.
Schritte¶
1. Neuesten Stand holen¶
Im Repo-Ordner:
Erwartet: git pull endet mit Already up to date. oder Successfully rebased and updated refs/heads/main., git status mit nothing to commit, working tree clean.
Zeigt git status noch Änderungen, sind das deine eigenen von früher: erst ausrollen oder verwerfen, dann neu anfangen.
2. In den Ordner wechseln¶
Für einen Host cd syslet/werner bzw. cd syslet/containerhost, für DNS cd desec.
Das Token für deSEC setzt direnv aus .envrc (Arbeitsrechner einrichten, Schritt 9).
plan und apply wirken nur auf den Host des Ordners, in dem du sie ausführst.
Betrifft deine Änderung beide Hosts, etwa über eine gemeinsame Datei direkt in syslet/ oder in syslet/scripts/, machst du die Schritte 3, 6 und 7 in syslet/werner und in syslet/containerhost.
3. plan vor der Änderung¶
| Bash | |
|---|---|
Erwartet bei einem Host No changes detected. All units are up to date., bei DNS am Ende No changes. Infrastructure is up-to-date.
Zeigt plan schon jetzt Änderungen, hör hier auf und geh nach plan zeigt unerwartete Änderungen vor.
4. Datei ändern¶
Was du in welcher Datei änderst, steht in der Anleitung zu deiner Aufgabe, etwa Image-Version anheben oder App hinzufügen.
5. Formatieren¶
Im Ordner der geänderten Datei, für gemeinsame Dateien also in syslet/:
Erwartet: cue fmt gibt nichts aus; git diff zeigt nur deine Änderung, höchstens mit angepassten Einrückungen und Leerzeichen.
Meldet cue fmt einen Fehler, steht darin Datei und Zeile, in der die CUE-Syntax nicht stimmt.
6. plan nach der Änderung¶
| Bash | |
|---|---|
Erwartet: nur deine Änderung. Zwei gekürzte Beispiele:
HedgeDoc von 1.12.0 auf 1.12.1 in syslet/werner/stack-hedgedoc.cue:
old: ist der Stand auf dem Host, new: der im Repo.
Was die Abschnitte bedeuten, steht in Plan output in der syslet-Doku.
Neuer TXT-Record doku-test in desec/desec_garage_lab_de.cue:
| Text Only | |
|---|---|
+ create legt an, ~ update ändert, - delete löscht.
Zeigt plan mehr als deine Änderung, roll nicht aus, sondern geh nach plan zeigt unerwartete Änderungen vor.
7. Ausrollen¶
| Bash | |
|---|---|
Erwartet: noch einmal dieselbe Ausgabe wie bei plan, danach Continue? (yes/no).
Tippe yes; jede andere Antwort bricht ab, ohne etwas zu ändern.
Bei einem Host kommt danach keine weitere Ausgabe, bei DNS die Ausgabe von desync.
8. Prüfen, ob die Änderung wirkt¶
| Bash | |
|---|---|
Erwartet: wieder „No changes“ wie in Schritt 3.
Prüfe außerdem das Ergebnis selbst: Öffne bei einer App ihre Adresse im Browser und sieh in die Logs (Container-Status und Logs ansehen); frage bei DNS den Record ab, etwa mit dig +short TXT doku-test.garage-lab.de @ns1.desec.io.
9. Committen¶
Zurück im Repo-Ordner legst du einen Commit an:
Im Editor schreibst du in die erste Zeile kurz, was du geändert hast, und darunter, warum, wenn das nicht offensichtlich ist (siehe Git-Workflow).
Erwartet: eine Zeile wie [main 1a2b3c4] update hedgedoc to 1.12.1.
10. Sofort pushen¶
| Bash | |
|---|---|
Erwartet: am Ende eine Zeile main -> main.
Lehnt Codeberg den Push ab (rejected), hat jemand anders inzwischen gepusht: Git-Konflikt lösen.
Prüfen¶
cue cmd planzeigt in jedem Ordner, in dem du ausgerollt hast, „No changes“.git statuszeigtYour branch is up to date with 'origin/main'.undnothing to commit, working tree clean.
Wenn etwas schiefgeht¶
- plan zeigt Änderungen, die nicht von dir sind: plan zeigt unerwartete Änderungen
- Push abgelehnt oder Konflikt beim Pull: Git-Konflikt lösen
- Container startet nach dem apply nicht oder die App ist nicht erreichbar: Container-Status und Logs ansehen
- apply bricht mit Fehlern ab: Troubleshoot a failed apply in der syslet-Doku
- Änderung zurücknehmen: die Datei wieder auf den alten Stand bringen und diese Anleitung ab Schritt 5 noch einmal durchlaufen; Allgemeines in Roll back a deployment in der syslet-Doku