# #016 Public Key ausrollen mit Dry-Run und Backup **Status:** erledigt **Meilenstein:** v0.2.0 **Labels:** backend, ui **Geschätzt:** 4 h **Tatsächlich:** 0 h 40 min ## Ziel Zuweisungen Schlüssel × Host/Gruppe × Benutzer; Dry-Run-Diff, Backup, atomares Schreiben, Rechte. ## Aufgaben - [x] Remote-Skript - [x] Optimistische Sperre über Datei-Hash - [x] Diff-Box im Schlüsseldetail ## Akzeptanzkriterien - [x] Integrationstest Ausrollen/Entfernen ## Abhängigkeiten #015, #010 ## Notizen / Entscheidungen - **Zwei Schritte:** TROCKENLAUF hält je Ziel Diff, Hinweise und die Hashes vorher/nachher fest; AUSROLLEN führt genau diesen Plan aus und bricht je Ziel ab, wenn sich Datei **oder** Soll geändert hat. Ein Trockenlauf gilt 15 Minuten und nur einmal. - **Auf dem Host** alles als Zielbenutzer (`runuser`), Hash dort erneut geprüft, Sicherung (letzte 5 bleiben), Temp-Datei + `mv`, 0700/0600. - **Nur gültiges UTF-8** wird bearbeitet, sonst ginge „bytegenau“ verloren. - **Soll** = direkte und Gruppen-Zuweisungen; der Deployment-Key gehört immer zum Soll des Anmeldebenutzers (Aussperrschutz aus #015). - Gruppen-Verwendungen: Zustand je Verwendung, Fehlschlag auf einem Host gewinnt. Zustand je Host folgt mit dem Abgleich (#021). - Oberfläche: Zuweisen auf der Schlüsselseite, Dry-Run je Schlüssel und je Host.