Files
infrastructure/VAULT_RESET.md
2026-01-11 23:41:50 +00:00

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:

  1. Neue Zertifikate generieren.
  2. Vault neu initialisieren.
  3. 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.

  1. Vorbereitung: Falls du terraform/bootstrap.tfvars gelöscht hattest, musst du sie neu erstellen (siehe README.md -> Phase 1).

  2. 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:

  1. Umgebungsvariablen setzen:

    export VAULT_ADDR='http://10.100.30.11:8200'
    export VAULT_TOKEN='hvs.DeinRootTokenHier'
    
  2. 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"
    
  3. 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.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.