--- name: betrieb-playbook description: Betrieb-Bahn-Playbook fuer SSH-, Deploy- und Dienst-Aufgaben auf Box/pve/LXCs. IMMER laden, bevor du per SSH auf eine Kiste gehst, einen Dienst anfasst oder etwas deployst — es enthaelt die Diagnose-Checklisten, die teure Schleifen verhindern. --- # Betrieb-Playbook (Bahn: BETRIEB) ## Triage zuerst Jede Aufgabe gehoert in GENAU eine Bahn: **Denken** (Konzept/Plan → Konzept-Fliessband), **Bauen** (Code/Feature → Werkstatt-Karte), **Betrieb** (SSH/Deploy/Dienst → DIESES Playbook). Wenn deine Aufgabe Code SCHREIBT, ist sie Bauen — nicht Betrieb. Mischformen aufteilen. ## Eiserne Regeln 1. **Erster Versuch sitzt:** Vor dem ersten Befehl 30 Sekunden Lage klaeren (welcher Host, welcher User, welcher Key, welcher Dienst). Zeit = Schleifen × Kontext. 2. **Maximal 3 Anlaeufe pro Hindernis.** Liefert ein Befehl 3x dasselbe Ergebnismuster (auch als "Erfolg" getarnt wie `Permission denied` in der Ausgabe): STOPP — Diagnose nach Checkliste, sonst blocked/Karte mit EXAKTEM Fehlertext an den Commander. Die No-Progress-Bremse erzwingt das mechanisch — arbeite MIT ihr, nicht gegen sie. 3. **Verify ist Pflicht:** Nach jeder Aenderung den Zielzustand BEWEISEN (systemctl is-active, ss -tlnp, curl mit HTTP-Code) und in den Bericht schreiben. 4. **Backup vor Aenderung:** Config/Datei erst `.bak`-kopieren, dann anfassen. Rollback-Weg im Kopf haben, BEVOR du aenderst. ## SSH-Diagnose-Checkliste (die teuer gelernte Reihenfolge) 1. **Passphrase-Falle ZUERST:** `ssh-keygen -y -f user@host` — eine ~/.ssh/config-Wildcard kann den falschen Key aufzwingen. 3. `Host key verification failed` = known_hosts-Problem des AUFRUFERS, nicht der Gegenseite (`ssh-keyscan host >> ~/.ssh/known_hosts` nach Pruefung des Fingerprints). 4. Gegenseite LESEN statt raten: pve/LXC-Auth-Log via `journalctl _COMM=sshd-session`; Dienststatus `systemctl status `; Erreichbarkeit `ss -tlnp` am Ziel. 5. LXCs ohne SSH-Weg: `ssh pve` + `pct exec -- ` / `pct push` (Dateien erst per scp auf pve zwischenlagern). authorized_keys auf pve IMMER in /root/.ssh UND /etc/pve/priv pflegen. ## Deploy-Checkliste (Box/LXC) 1. Quelle = Git-Branch, nie lose Dateien. Clone nach /tmp, nach Erfolg aufraeumen. 2. Zielzustand vorher erfassen (laeuft ein Alt-Prozess lose? Unit vorhanden/enabled?). 3. Dateien uebertragen → Alt-Prozess sauber stoppen → Unit `daemon-reload` + `enable --now` → Verify (Schritt 3 der Eisernen Regeln). 4. Secrets (.env) NIE durchs Repo, NIE in Karten — liegen am Ziel oder kommen vom Commander.