Aller au contenu

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.yml ou defaults/main.yml dans 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 become uniquement 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.

Ressources