Les playbooks sont souvent versionnés dans Git, ce qui signifie que tout dépôt public ou partagé expose potentiellement :
Jamais faire :
❌ À ÉVITER ABSOLUMENT
name: Connection à la base de données
mysql_db:
login_host: localhost
login_user: root
login_password: mon_mot_de_passe_clair # FAILLE DE SÉCURITÉ
Vault est le système de chiffrement natif d'Ansible qui permet de protéger les fichiers sensibles avec du chiffrement AES-256.
Créer un nouveau fichier chiffré
ansible-vault create secrets.yml
Chiffrer un fichier existant
ansible-vault encrypt secrets.yml
Chiffrer plusieurs fichiers
ansible-vault encrypt group_vars/all.yml host_vars/db01.yml
Édition avec demande de mot de passe
ansible-vault edit secrets.yml
Voir le contenu
ansible-vault view secrets.yml
Changer le mot de passe
ansible-vault rekey secrets.yml
Fichier: group_vars/all.yml
vault_db_password: "P@ssw0rd_123!Secure"
vault_api_token: "sk_live_xxxxxxxxxxxx"
vault_ssh_private_key: |
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA...
-----END RSA PRIVATE KEY-----
Demander le mot de passe à chaque exécution
ansible-playbook site.yml --ask-vault-pass
Mot de passe via fichier (CI/CD)
ansible-playbook site.yml --vault-password-file ~/.vault_pass
Mot de passe via variable d'environnement
export ANSIBLE_VAULT_PASSWORD_FILE=~/.vault_pass
ansible-playbook site.yml
| Pratique | Recommandation |
|---|---|
| Stockage des secrets | Fichiers .vault hors dépôt Git |
Fichiers .vault |
Ajouter au .gitignore |
| Rotation des mots de passe | Tous les 90 jours minimum |
| Partage des secrets | Utiliser un coffre-fort d'équipe (HashiCorp Vault) |
| Limitation d'accès | chmod 600 sur les fichiers sensibles |
| Audit | Journalisation des accès aux secrets |
Secrets et fichiers chiffrés
.vault
.vault_pass
group_vars/all.yml
host_vars/*.yml
project/
├── site.yml
├── inventory
├── group_vars/
│ └── .gitkeep # Fichier vierge dans Git
├── host_vars/
│ └── .gitkeep
├── vault/ # Hors dépôt Git
│ ├── secrets_prod.yml
│ └── secrets_dev.yml
└── .gitignore