plan zeigt unerwartete Änderungen¶
Ziel¶
Du weißt, woher die Änderungen in plan kommen, die nicht von dir sind, und plan zeigt danach nur noch deine eigene Änderung oder gar nichts.
Voraussetzungen¶
- gelesen: Infrastructure as Code, vor allem den Abschnitt über Drift, und Git-Workflow
- du kannst eine plan-Ausgabe lesen (Änderung ausrollen, Schritt 6)
Kein apply, solange unklar ist, woher eine Änderung kommt
apply gleicht den Server an dein Repo an. Kommt eine Änderung in plan von jemand anderem, rollst du sie damit aus oder machst sie rückgängig, ohne zu wissen, was sie bewirkt.
Schritte¶
So findest du die Ursache:
flowchart TD
start(["plan zeigt Änderungen,<br>die nicht von dir sind"])
status{"git status:<br>eigene Änderungen offen?"}
eigene["Schritt 1:<br>eigene alte Änderung<br>ausrollen oder verwerfen"]
pull{"nach git pull --rebase<br>und plan noch da?"}
fertig(["fertig"])
log{"Schritt 3:<br>passt ein neuer Commit<br>zur Änderung?"}
commit["Person fragen:<br>committet, aber<br>nicht ausgerollt?"]
push["Schritt 4: Person fragen:<br>ausgerollt, aber<br>nicht gepusht?"]
hand["Schritt 5: Drift<br>Person fragen, dann<br>ins Repo oder per apply<br>zurücksetzen"]
start --> status
status -->|ja| eigene
status -->|nein| pull
eigene --> pull
pull -->|nein| fertig
pull -->|ja| log
log -->|ja| commit
log -->|nein| push
push -->|niemand| hand
1. Eigenen Stand prüfen¶
| Bash | |
|---|---|
Erwartet: nothing to commit, working tree clean.
Zeigt git status geänderte Dateien, sind das deine eigenen, noch nicht ausgerollten Änderungen, und plan zeigt sie mit an.
git diff zeigt, was das ist.
Willst du sie behalten, roll sie nach Änderung ausrollen aus; sonst verwirf sie mit git restore <datei>.
2. Neuesten Stand holen und plan wiederholen¶
Erwartet: „No changes“. Dann fehlten dir nur die Commits der anderen, und du bist fertig.
3. Historie prüfen¶
Sieh nach, wer zuletzt an den Dateien gearbeitet hat, die zu den Änderungen in plan gehören:
| Bash | |
|---|---|
Erwartet: die letzten fünf Commits an der Datei mit Name, Zeitpunkt und Message, etwa 1a2b3c4 Anna 2 hours ago update hedgedoc to 1.12.1.
Passt ein neuer Commit zu dem, was plan anlegen oder ändern will, hat die Person committet, aber nicht ausgerollt.
Frag sie, ob die Änderung ausgerollt werden soll, und lass sie es selbst nach Änderung ausrollen tun.
4. Fragen, ob jemand ausgerollt und nicht gepusht hat¶
Will plan etwas auf einen älteren Stand zurücksetzen, etwa ein Image auf eine ältere Version oder einen Record löschen, den es bei deSEC gibt, hat wahrscheinlich jemand ausgerollt und nicht gepusht.
Bei einem Host steht unter old: der Stand auf dem Host, unter new: der im Repo; bei DNS löscht - delete, was nur bei deSEC steht.
Frag in Signal, wer zuletzt etwas ausgerollt hat, und warte, bis die Person ihre Commits gepusht hat.
Danach weiter mit Schritt 2.
5. Drift klären¶
Hat niemand etwas ausgerollt, ist es Drift: Jemand hat von Hand auf dem Host oder in der Web-Oberfläche von deSEC etwas geändert.
Frag in Signal, wer das war und warum.
Steht bei einem Host nur ein Container unter Containers to start:, sucht vielleicht gerade jemand einen Fehler und hat ihn dafür gestoppt (siehe Was man von Hand darf).
- Wird die Änderung gebraucht, übernimm sie ins Repo und roll sie nach Änderung ausrollen aus; plan zeigt dann keinen Unterschied mehr.
-
Wird sie nicht gebraucht, setz sie zurück:
Bash Erwartet: dieselben Änderungen wie bei plan, dann
Continue? (yes/no); tippeyes.
Lässt sich nicht klären, wer die Änderung gemacht hat, entscheidet ihr gemeinsam in Signal, bevor jemand apply ausführt.
Prüfen¶
| Bash | |
|---|---|
Erwartet: bei einem Host No changes detected. All units are up to date., bei DNS No changes. Infrastructure is up-to-date.
Hast du die Anleitung mitten in Änderung ausrollen begonnen, zeigt plan jetzt nur noch deine eigene Änderung; mach dort weiter.
Wenn etwas schiefgeht¶
- Konflikt bei
git pull --rebase: Git-Konflikt lösen - Ein Container läuft nach dem Zurücksetzen nicht mehr: Container-Status und Logs ansehen
- plan zeigt nach jedem apply wieder dieselbe Änderung: Troubleshoot a failed apply in der syslet-Doku