# Ansible Vault Password Dokumentation ## ?bersicht Das Ansible Vault-Passwort wird verwendet, um verschl?sselte Secrets-Dateien (`production.vault.yml`) zu sch?tzen. Diese Dokumentation beschreibt, wie das Vault-Passwort angelegt, gespeichert und verwendet wird. ## Historischer Kontext ### Erstellungsdatum - **Erstellt am:** 30. Oktober 2025, 21:42:27 - **Datei:** `deployment/ansible/secrets/.vault_pass` - **Erstes Setup-Script:** 31. Oktober 2025 (Commit `e26eb2a`) - **Script-Datei:** `deployment/ansible/scripts/init-secrets.sh` ### Einf?hrung Das Vault-Passwort-System wurde im Rahmen des CI/CD-Pipeline-Setups eingef?hrt, um die sichere Verwaltung von Production-Secrets zu erm?glichen. Das automatische Setup-Script wurde am 31. Oktober 2025 hinzugef?gt, um die manuelle Erstellung zu vereinfachen. ## Speicherort und Sicherheit ### Dateispeicherort - **Pfad:** `deployment/ansible/secrets/.vault_pass` - **Berechtigungen:** `600` (nur Owner lesbar/schreibbar) - **Gitignored:** ? Ja (in `.gitignore` hinterlegt) - **Inhalt:** Eine Zeile mit dem Vault-Passwort (plaintext) ### Sicherheitshinweise ?? **WICHTIG:** - Das Passwort ist in Klartext in der Datei gespeichert - Die Datei ist **gitignored** und wird **nie** ins Repository committet - Berechtigungen sind auf `600` gesetzt (nur Owner-Zugriff) - Das Passwort sollte zus?tzlich im **Passwort-Manager** gespeichert werden - F?r verschiedene Umgebungen (dev/staging/prod) sollten unterschiedliche Passw?rter verwendet werden ## Erstellung des Vault-Passworts ### Methode 1: Automatisiertes Script (Empfohlen) Das Script `init-secrets.sh` f?hrt Sie interaktiv durch den Setup-Prozess: ```bash cd deployment/ansible ./scripts/init-secrets.sh ``` **Was das Script macht:** 1. Pr?ft, ob `.vault_pass` bereits existiert 2. Falls nicht vorhanden: Fragt interaktiv nach dem Passwort (mit Best?tigung) 3. Speichert das Passwort in `secrets/.vault_pass` 4. Setzt Berechtigungen auf `600` 5. Erstellt und verschl?sselt `production.vault.yml` (optional) **Vorteile:** - Automatische Berechtigungen - Passwort-Best?tigung verhindert Tippfehler - Vollst?ndiger Setup-Workflow inkl. Vault-Datei-Erstellung ### Methode 2: Manuelle Erstellung ```bash cd deployment/ansible/secrets # Passwort erstellen echo "your-secure-vault-password-here" > .vault_pass # Sicherheit: Berechtigungen setzen chmod 600 .vault_pass ``` **Wichtig:** Verwenden Sie ein sicheres, zuf?lliges Passwort! ## Verwendung des Vault-Passworts ### In Ansible Playbooks Das Vault-Passwort wird bei der Ausf?hrung von Playbooks ?bergeben: ```bash # Beispiel: Production Secrets deployen ansible-playbook playbooks/setup-production-secrets.yml \ --vault-password-file secrets/.vault_pass # Beispiel: Infrastructure deployen ansible-playbook playbooks/setup-infrastructure.yml \ -i inventory/production.yml \ --vault-password-file secrets/.vault_pass # Beispiel: Application Update deployen ansible-playbook playbooks/deploy-update.yml \ -e "image_tag=sha-abc123" \ --vault-password-file secrets/.vault_pass ``` ### Vault-Dateien verwalten ```bash # Vault-Datei entschl?sseln und anzeigen ansible-vault view secrets/production.vault.yml \ --vault-password-file secrets/.vault_pass # Vault-Datei bearbeiten ansible-vault edit secrets/production.vault.yml \ --vault-password-file secrets/.vault_pass # Neue Vault-Datei erstellen und verschl?sseln ansible-vault encrypt secrets/production.vault.yml \ --vault-password-file secrets/.vault_pass # Vault-Datei entschl?sseln (dauerhaft) ansible-vault decrypt secrets/production.vault.yml \ --vault-password-file secrets/.vault_pass ``` ## CI/CD Integration ### Gitea Actions In Gitea Actions wird das Vault-Passwort als Secret gespeichert: - **Secret-Name:** `ANSIBLE_VAULT_PASSWORD` - **Verwendung:** Wird automatisch in Workflows verwendet, die Ansible-Vault ben?tigen **Hinzuf?gen des Secrets in Gitea:** 1. Gehe zu: Repository Settings ? Secrets 2. Erstelle neues Secret: `ANSIBLE_VAULT_PASSWORD` 3. Wert: Das Vault-Passwort aus `.vault_pass` **Workflow-Beispiel:** ```yaml - name: Deploy with Ansible run: | ansible-playbook playbooks/deploy-update.yml \ --vault-password-file <(echo "${{ secrets.ANSIBLE_VAULT_PASSWORD }}") ``` ## Passwort zur?cksetzen/?ndern ### Passwort ?ndern Wenn das Vault-Passwort ge?ndert werden muss: ```bash cd deployment/ansible # 1. Alte Vault-Datei entschl?sseln (mit altem Passwort) ansible-vault decrypt secrets/production.vault.yml \ --vault-password-file secrets/.vault_pass # 2. Neues Passwort setzen echo "new-secure-vault-password" > secrets/.vault_pass chmod 600 secrets/.vault_pass # 3. Vault-Datei mit neuem Passwort verschl?sseln ansible-vault encrypt secrets/production.vault.yml \ --vault-password-file secrets/.vault_pass # 4. Passwort im Passwort-Manager aktualisieren # 5. CI/CD Secret in Gitea aktualisieren (ANSIBLE_VAULT_PASSWORD) ``` ### Passwort vergessen ?? **Wenn das Vault-Passwort verloren geht:** - Die verschl?sselte `production.vault.yml` kann nicht mehr entschl?sselt werden - Eine neue Vault-Datei muss erstellt werden - Alle Secrets m?ssen neu konfiguriert werden - **L?sung:** Passwort im Passwort-Manager speichern! ## Troubleshooting ### Problem: "Decryption failed" **Fehler:** ``` ERROR! Decryption failed (no vault secrets were found) ``` **L?sung:** 1. Passwort-Datei pr?fen: ```bash cat deployment/ansible/secrets/.vault_pass ``` 2. Korrekten Pfad verwenden: ```bash --vault-password-file secrets/.vault_pass ``` 3. Berechtigungen pr?fen: ```bash ls -la deployment/ansible/secrets/.vault_pass # Sollte: -rw------- (600) ``` ### Problem: "Vault password file not found" **Fehler:** ``` ERROR! the vault password file secrets/.vault_pass was not found ``` **L?sung:** ```bash # Pr?fen ob Datei existiert ls -la deployment/ansible/secrets/.vault_pass # Falls nicht vorhanden, neu erstellen (siehe "Erstellung des Vault-Passworts") ``` ### Problem: "Permission denied" **Fehler:** ``` Permission denied: secrets/.vault_pass ``` **L?sung:** ```bash chmod 600 deployment/ansible/secrets/.vault_pass ``` ## Best Practices ### ? Empfohlene Vorgehensweise 1. **Passwort-Manager:** Vault-Passwort im Passwort-Manager speichern 2. **Sichere Passw?rter:** Verwendung von zuf?lligen, starken Passw?rtern 3. **Separate Passw?rter:** Verschiedene Passw?rter f?r dev/staging/prod 4. **Regelm??ige Rotation:** Passwort regelm??ig ?ndern (z.B. viertelj?hrlich) 5. **Backup:** Passwort an sicherem Ort (Passwort-Manager) sichern 6. **Zugriffskontrolle:** Nur autorisierte Personen sollten Zugriff haben ### ? Zu vermeiden - Passwort ins Repository committen (gitignored!) - Passwort in unverschl?sselten Dokumenten speichern - Passwort per Email oder Chat teilen - Einfache/erratbare Passw?rter verwenden - Passwort mehreren Umgebungen teilen ## Verwandte Dateien - **Setup-Script:** [`deployment/ansible/scripts/init-secrets.sh`](../../ansible/scripts/init-secrets.sh) - **Vault-Datei:** `deployment/ansible/secrets/production.vault.yml` - **Vault-Template:** `deployment/ansible/secrets/production.vault.yml.example` - **Gitignore:** `deployment/ansible/secrets/.gitignore` - **Haupt-Dokumentation:** [`deployment/ansible/README.md`](../../ansible/README.md) - **Setup-Guide:** [`deployment/docs/guides/setup-guide.md`](setup-guide.md) ## Referenzen - [Ansible Vault Dokumentation](https://docs.ansible.com/ansible/latest/user_guide/vault.html) - [Ansible Vault Best Practices](https://docs.ansible.com/ansible/latest/user_guide/vault.html#best-practices) ## Zusammenfassung | Aspekt | Details | |--------|---------| | **Erstellt am** | 30. Oktober 2025, 21:42:27 | | **Speicherort** | `deployment/ansible/secrets/.vault_pass` | | **Berechtigungen** | `600` (nur Owner) | | **Gitignored** | ? Ja | | **Setup-Script** | `scripts/init-secrets.sh` | | **CI/CD Secret** | `ANSIBLE_VAULT_PASSWORD` | | **Verwendung** | `--vault-password-file secrets/.vault_pass` |