Neue Person freischalten¶
Ziel¶
Die neue Person kommt per SSH auf beide Hosts und die Webspaces bei hosting.de und kann die Secrets im Repo entschlüsseln.
Voraussetzungen¶
- dein Rechner ist eingerichtet (Arbeitsrechner einrichten), du kommst auf beide Hosts und kannst die Secrets entschlüsseln
- von der neuen Person: ihr öffentlicher age-Schlüssel (
age1…) und ihr öffentlicher SSH-Schlüssel (Inhalt von~/.ssh/garagelab.pub), beides aus Arbeitsrechner einrichten, Schritt 7 - gelesen: Secrets im Repo und Git-Workflow
Schritte¶
1. Stand holen und plan prüfen¶
Wie in Änderung ausrollen, Schritte 1 bis 3, für syslet/werner und syslet/containerhost.
Erwartet: Beide zeigen No changes detected. All units are up to date.
2. SSH-Schlüssel auf beiden Hosts eintragen¶
Die Liste der berechtigten Schlüssel liegt nur auf den Hosts, nicht im Repo; sie wird von Hand gepflegt: Kommt jemand dazu oder hört auf, trägt ein anderer Admin den Schlüssel ein oder entfernt ihn.
Lege den öffentlichen Schlüssel der Person als Datei neu.pub ab und hänge ihn an:
| Bash | |
|---|---|
Achte auf die zwei >>: Mit nur einem > überschreibst du die Datei, und alle anderen verlieren ihren Zugang.
| Bash | |
|---|---|
Erwartet: jeweils der Schlüssel der neuen Person.
Trag denselben Schlüssel außerdem in der Web-Oberfläche von hosting.de bei den SSH-Zugängen der beiden Webspaces ein, für die Webseite und das Wiki (siehe hosting.de). Das geht nur, wenn du dort selbst Zugang hast; sonst bitte in Signal jemanden darum.
3. age-Schlüssel in syslet/.sops.yaml eintragen¶
Für den age-Schlüssel der Person ergänze in syslet/.sops.yaml unter keys: eine Zeile - &admin_<name> age1… und in beiden creation_rules unter age: eine Zeile - *admin_<name>.
| Bash | |
|---|---|
Erwartet: drei neue Zeilen, eine unter keys: und je eine in den Regeln für containerhost/ und werner/.
4. Secrets für die neue Person verschlüsseln¶
| Bash | |
|---|---|
Erwartet: git status zeigt syslet/.sops.yaml und alle creds-*.enc.yaml beider Hosts als geändert.
Die Werte der Secrets bleiben dabei gleich.
5. plan auf beiden Hosts¶
Erwartet: Unter Secret changes: stehen alle Secrets des Hosts, in der Summary alle Container, die Secrets nutzen, mit secret updated, restarted.
Das ist richtig so: syslet sieht die neu verschlüsselten Dateien als geänderte Secrets.
Dasselbe in syslet/containerhost.
6. Auf beiden Hosts ausrollen¶
Das apply startet alle Container neu, die Secrets nutzen. Die Apps sind dabei kurz nicht erreichbar; such dir dafür eine ruhige Zeit aus.
| Bash | |
|---|---|
Erwartet: dieselbe Ausgabe wie in Schritt 5 und die Frage Continue? (yes/no); tippe yes.
Dasselbe im anderen Host-Ordner.
7. Committen und pushen¶
| Bash | |
|---|---|
Erwartet: am Ende von git push eine Zeile main -> main.
8. Der neuen Person Bescheid geben¶
Sie macht mit Arbeitsrechner einrichten, Schritt 8 weiter.
Prüfen¶
cue cmd planzeigt insyslet/wernerundsyslet/containerhostwiederNo changes detected. All units are up to date.- Die neue Person kommt mit
ssh werner.garage-lab.de hostnameauf den Host und kann mitsops -d syslet/werner/creds-mailjet.enc.yamlein Secret entschlüsseln, nachdem siegit pullausgeführt hat.
Wenn etwas schiefgeht¶
sops updatekeysmeldetFailed to get the data key: Du kannst die Dateien selbst nicht entschlüsseln; prüfe mitsops -d werner/creds-mailjet.enc.yaml, ob dein eigener Schlüssel funktioniert.sops updatekeysfindet keine.sops.yamloder keine passende Regel: Du hast den Befehl nicht im Ordnersyslet/ausgeführt.- plan zeigt in Schritt 5 mehr als die Secrets und Neustarts: plan zeigt unerwartete Änderungen
- Ein Container kommt nach dem apply nicht wieder hoch: Container-Status und Logs ansehen
- Allgemeines zum Ablauf: Add a SOPS recipient in der syslet-Doku