# 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. ```bash # 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: 1. Neue Zertifikate generieren. 2. Vault neu initialisieren. 3. Neue Unseal-Keys und ein neues Root-Token erstellen. ```bash # 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. ```bash # 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. 1. **Vorbereitung:** Falls du `terraform/bootstrap.tfvars` gelöscht hattest, musst du sie neu erstellen (siehe `README.md` -> Phase 1). 2. **Import:** ```bash 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: 1. **Umgebungsvariablen setzen:** ```bash export VAULT_ADDR='http://10.100.30.11:8200' export VAULT_TOKEN='hvs.DeinRootTokenHier' ``` 2. **Secret anlegen:** ```bash # 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" ``` 3. **Deployment starten:** ```bash 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.crt` in Firefox/Chrome. * **Linux Desktop:** Kopiere es nach `/usr/local/share/ca-certificates/` und führe `update-ca-certificates` aus. * **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.