In vielen Automatisierungsprojekten müssen Passwörter, API-Keys oder andere sensible Informationen in Playbooks oder Variablen verwendet werden. Diese Daten dürfen jedoch keinesfalls im Klartext in Versionskontrollsystemen oder Konfigurationsdateien stehen.
Mit Ansible Vault bietet Ansible eine integrierte Lösung, um sensible Daten sicher zu verschlüsseln und gleichzeitig einfach in Automatisierungen einzubinden.
Warum Ansible Vault?
- Schutz sensibler Informationen: Passwörter oder private Schlüssel werden verschlüsselt gespeichert.
- Integration in bestehende Workflows: Nutzung in Playbooks ohne manuelles Entschlüsseln.
- Automatisierbar: Lässt sich in CI/CD-Pipelines integrieren.
- Versionskontrolle möglich: Verschlüsselte Dateien können sicher in Git gespeichert werden.
Erstellen einer verschlüsselten Datei
Mit folgendem Befehl lässt sich eine neue verschlüsselte Datei anlegen:
ansible-vault create secrets.yml
Daraufhin öffnet sich ein Editor, in dem sensible Daten eingetragen werden können.
Die Datei wird automatisch mit AES-256 verschlüsselt.
Verschlüsseln und Entschlüsseln bestehender Dateien
- Verschlüsseln:
ansible-vault encrypt vars.yml
- Entschlüsseln:
ansible-vault decrypt vars.yml
- Passwort ändern:
ansible-vault rekey vars.yml
Verwendung in Playbooks
Verschlüsselte Dateien können in Playbooks wie jede andere Variablen-Datei genutzt werden:
---
- name: Beispiel mit Vault
hosts: webserver
vars_files:
- secrets.yml
tasks:
- name: Passwort anzeigen
debug:
msg: "Das Passwort ist {{ db_password }}"
Beim Ausführen des Playbooks wird das Vault-Passwort abgefragt oder über eine Passwortdatei bereitgestellt:
ansible-playbook playbook.yml --ask-vault-pass
Automatisierung und CI/CD-Integration
In CI/CD-Pipelines kann das Vault-Passwort aus sicheren Umgebungsvariablen oder Secret Managern wie HashiCorp Vault, AWS Secrets Manager oder Azure Key Vault bereitgestellt werden.
Best Practices
- Ein Vault pro Projekt: Für einfache Verwaltung und klare Strukturen.
- Getrennte Vaults pro Umgebung: z. B. dev, staging, production.
- Kein Klartext in Git: Nur verschlüsselte Dateien versionieren.
- Automatisierte Passworteingabe: Sichere Integration in Build-Pipelines.
Schreibe einen Kommentar