3.9 KiB
Vault Reset Guide
Dieses Dokument beschreibt, wie du HashiCorp Vault komplett zurücksetzt, falls das Root Token verloren gegangen ist oder die Instanz irreparabel beschädigt scheint.
⚠️ ACHTUNG: DATENVERLUST! Dieser Vorgang löscht unwiderruflich:
- Alle gespeicherten Secrets (Passwörter, Tokens).
- Alle konfigurierten User, Policies und Engines.
- Das Zertifikat (CA).
Du musst anschließend alle Secrets neu einspielen (via setup_vault_secrets.sh).
Schritt 1: Vault Container & Daten löschen
Führe dies auf deinem Management-Host (vm-management-200) aus. Wir nutzen SSH, um die Daten auf dem Vault-Server (vm-docker-apps-301) zu löschen.
# 1. Container stoppen und entfernen
ssh -i ~/.ssh/id_ed25519_ansible_prod ansible@10.100.30.11 "docker stop vault-prod && docker rm vault-prod"
# 2. Persistente Daten löschen (File Storage & Zertifikate)
ssh -i ~/.ssh/id_ed25519_ansible_prod ansible@10.100.30.11 "sudo rm -rf /opt/vault/file/* /opt/vault/certs/*"
Schritt 2: Neu-Deployment
Jetzt lassen wir Ansible den Container neu starten. Da die Verzeichnisse leer sind, wird das entrypoint.sh Skript:
- Neue Zertifikate generieren.
- Vault neu initialisieren.
- Neue Unseal-Keys und ein neues Root-Token erstellen.
# Wechsel in das Ansible Verzeichnis
cd infrastructure/ansible
# Playbook ausführen (ignoriere 'Permission denied' Fehler bei Secrets, da Vault leer ist)
ansible-playbook -i inventory.ini deploy.yml
Schritt 3: Neue Zugangsdaten abholen
Der neue Vault ist nun gestartet. Wir müssen uns die neuen "Schlüssel zum Königreich" holen.
# 1. Neues Root Token auslesen
# (ACHTUNG: Speichere dieses Token sofort in deinem Passwort-Manager!)
ssh -i ~/.ssh/id_ed25519_ansible_prod ansible@10.100.30.11 "sudo cat /opt/vault/file/init_keys.json"
# 2. Neues CA Zertifikat holen
# (Sonst vertraut dein PC dem neuen Vault nicht)
scp -i ~/.ssh/id_ed25519_ansible_prod ansible@10.100.30.11:/opt/vault/certs/ca.crt ../../vault-ca.crt
Schritt 4: Secrets wiederherstellen
Nun nutzen wir unser Setup-Skript, um die Secrets aus deiner (hoffentlich noch vorhandenen oder neu erstellten) bootstrap.tfvars wieder einzuspielen.
-
Vorbereitung: Falls du
terraform/bootstrap.tfvarsgelöscht hattest, musst du sie neu erstellen (sieheREADME.md-> Phase 1). -
Import:
cd ../.. # Ins Root des Repos ./setup_vault_secrets.sh- Gib das neue Root-Token ein (aus Schritt 3).
- Das Skript aktiviert die Engines und schreibt die Secrets neu.
Zusatz: K3s Cluster Secrets verwalten
Für das K3s Deployment werden spezielle Secrets benötigt (token und kubevip_version). Diese werden nicht über setup_vault_secrets.sh (aus der tfvars) erstellt, sondern manuell oder per Skript.
K3s Secrets anlegen
Wenn Ansible meckert, dass Kein K3s Token in Vault gefunden wurde:
-
Umgebungsvariablen setzen:
export VAULT_ADDR='http://10.100.30.11:8200' export VAULT_TOKEN='hvs.DeinRootTokenHier' -
Secret anlegen:
# Zufälliges Token generieren K3S_TOKEN=$(openssl rand -base64 48) # In Vault schreiben vault kv put secret/infrastructure/k3s token=$K3S_TOKEN kubevip_version="v0.7.0" -
Deployment starten:
cd infrastructure/ansible ansible-playbook -i inventory.ini k3s_deploy.yml
Schritt 5: Clients aktualisieren
Da wir eine neue CA haben, musst du das Zertifikat ggf. neu verteilen:
- Browser: Importiere das neue
vault-ca.crtin Firefox/Chrome. - Linux Desktop: Kopiere es nach
/usr/local/share/ca-certificates/und führeupdate-ca-certificatesaus. - Terraform: Das Environment (
VAULT_CACERT) zeigt meist eh auf die Datei im Repo (./vault-ca.crt), die wir in Schritt 3 überschrieben haben -> Sollte direkt gehen.
🎉 Fertig! Dein Vault ist frisch aufgesetzt.