Zum Inhalt

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

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
ssh werner.garage-lab.de 'cat >> /root/.ssh/authorized_keys' < neu.pub
ssh vm-containerhost.garage-lab.net 'cat >> /root/.ssh/authorized_keys' < neu.pub

Achte auf die zwei >>: Mit nur einem > überschreibst du die Datei, und alle anderen verlieren ihren Zugang.

Bash
ssh werner.garage-lab.de tail -n 1 /root/.ssh/authorized_keys
ssh vm-containerhost.garage-lab.net tail -n 1 /root/.ssh/authorized_keys

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
git diff syslet/.sops.yaml

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
1
2
3
cd syslet
sops updatekeys -y werner/creds-*.enc.yaml containerhost/creds-*.enc.yaml
git status --short

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

Bash
cd werner
cue cmd plan

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
cue cmd apply

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
1
2
3
4
cd ../..
git add syslet/.sops.yaml syslet/werner syslet/containerhost
git commit -m "add <name> as admin"
git push

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 plan zeigt in syslet/werner und syslet/containerhost wieder No changes detected. All units are up to date.
  • Die neue Person kommt mit ssh werner.garage-lab.de hostname auf den Host und kann mit sops -d syslet/werner/creds-mailjet.enc.yaml ein Secret entschlüsseln, nachdem sie git pull ausgeführt hat.

Wenn etwas schiefgeht

  • sops updatekeys meldet Failed to get the data key: Du kannst die Dateien selbst nicht entschlüsseln; prüfe mit sops -d werner/creds-mailjet.enc.yaml, ob dein eigener Schlüssel funktioniert.
  • sops updatekeys findet keine .sops.yaml oder keine passende Regel: Du hast den Befehl nicht im Ordner syslet/ 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