119 lines
3.9 KiB
Markdown
119 lines
3.9 KiB
Markdown
# 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.
|