Best Practices pour Ansible
Adopter des bonnes pratiques garantit que vos projets Ansible sont maintenables, robustes et évolutifs.
Organisation du projet
- Utilisez des roles : Regroupez les tâches dans des roles pour la modularité.
- Structure claire : Organisez vos fichiers ainsi :
project/ ├── inventory/ │ └── production.ini ├── playbooks/ │ └── deploy.yml ├── roles/ │ └── myrole/ └── vars/ └── main.yml text
- Versionnez avec Git : Traitez vos playbooks comme du code.
Écriture des playbooks
- Noms explicites : Utilisez des noms de tâches descriptifs :
- name: Installer et démarrer Apache service: name: apache2 state: started - Idempotence : Préférez les modules idempotents aux commandes shell :
# Mauvais - name: Créer répertoire command: mkdir /var/www/myapp # Bon - name: Créer répertoire file: path: /var/www/myapp state: directory
Gestion des variables
- Regroupez les variables : Utilisez des fichiers
vars.ymloudefaults/main.ymldans les roles. - Utilisez Vault pour les secrets :
ansible-vault create secrets.yml - Priorité des variables : Comprenez l’ordre de priorité (inventaire, defaults, vars, etc.).
Test et validation
- Mode check : Simulez l’exécution :
ansible-playbook playbook.yml --check - Vérifiez la syntaxe :
ansible-playbook playbook.yml --syntax-check - Utilisez Molecule : Testez vos roles dans des environnements isolés :
molecule test
Sécurité
- Chiffrez les secrets : Utilisez Ansible Vault pour les mots de passe.
- Limitez les privilèges : Utilisez
becomeuniquement quand nécessaire. - Restreignez les hôtes : Définissez des groupes spécifiques dans l’inventaire.
Performance
- Parallélisme : Ajustez le nombre de forks dans
ansible.cfg:[defaults] forks = 50 - Cache des facts : Activez le cache pour réduire les appels réseau :
[defaults] fact_caching = jsonfile fact_caching_timeout = 86400
Documentation
- Commentez vos playbooks :
# Ce playbook installe un serveur web - name: Déployer Apache ... - Ajoutez un README : Documentez chaque role et playbook.