![Logo Ansible](images/logo-ansible.svg)
# Bonnes pratiques
## Rester simple !
## Rester clair !
- Apporter tout le soin nécessaire à la lisibilité du code Ansible.
- Nommer toujours vos Plays et Tasks de manière précise et significative.
- Privilégiez la syntaxe YAML native.
(Pas de : `name=httpd state=started enabled=yes`)
- Ainsi fait, le code Ansible peut devenir la documentation de référence de votre workflow.
## Penser "déclaratif"
- Ansible permet de décrire un _état désiré_.
- Si vous essayez d'écrire du code dans vos playbooks et rôles, vous augmentez le risque d'échec.
- Utilisez prioritairement les Modules Ansible chaque fois que c'est possible.
## Utiliser les Roles
- Utilisez les Roles !
- Ils permettent un très bon découpage du code Ansible.
- Ils permettent de gérer des variables par défaut pour les composants.
## Attention aux variables !
- Ansible permet de déclarer des variables dans une grande variété d'emplacements. Il devient facile de s'y perdre !
- Évitez de trop disperser les déclarations de variables dans le code Ansible.
- Limitez les déclarations de variables à deux ou trois emplacements clés :
1. variables de groupes
2. variables de rôles
- Documenter précisément les variables que vous déclarez dans votre code Ansible.
## Eviter autant que possible les Modules "Commands"
- Les modules de commandes génériques tels que `shell` ou `command` peuvent conduire à certains dysfonctionnements. En effet les commandes Shell :
- ne sont pas toujours idempotentes.
- s'exécuteront toujours et retourneront l'état `changed` (à moins de spécifier `changed_when`).
- Les modules plus spécifiques sont souvent prévus pour être agnostique du système d'exploitation, ce qui permet d'augmenter la ré-utilisabilité du code.
## Eviter le module "lineinfile"
- Utiliser les modules `copy` ou `template` plutôt que `lineinfile` ou `replace`
- Pas besoin de connaître la syntaxe `regex`.
- Permet de contrôler exactement le contenu du fichier final.
## Créer des fichiers d’inventaires séparés
- Si vous devez gérer plusieurs environnements, créez des fichiers d'inventaires séparés afin d'éviter les problèmes !
## Les bonnes pratiques selon Ansible
https://docs.ansible.com/ansible/latest/user_guide/playbooks_best_practices.html
## Autres bonnes pratiques
https://www.serverraumgeschichten.de/2018/04/ansible-best-practices/