Molecule – Guide complet (Ansible Testing Framework)
Objectif : Comprendre et utiliser Molecule pour tester des rôles Ansible de manière automatisée, reproductible et fiable.
1. Qu’est-ce que Molecule ?
Molecule est un framework de test pour rôles Ansible. Il permet de vérifier automatiquement qu’un rôle fonctionne correctement dans un environnement simulé (Docker, Podman, LXC,LXC ou VM).
Il fait partie de l’écosystème [oai_citation:0‡ansible.com](https://www.ansible.com/?utm_source=chatgpt.com)Ansible et est utilisé pour :
- tester des rôles Ansible
- valider des
playbooksinfrastructuresindirectementde manière reproductible - automatiser les tests CI/CD
- éviter les régressions
infraen production
2. Pourquoi utiliser Molecule ?
LesTests manuels des rôlesAnsible sont testés “à la main”LesErreurserreurs arriventdécouvertes en productionPas deAucune reproductibilité
Avec Molecule :
- Tests
automatiques des rôlesautomatisés - Environnements jetables
(containers) ReproductibilitéValidationtotalesystématique des rôles
3. Le cycle Molecule (IMPORTANT)
Molecule fonctionne selon un cycle standard :
create → converge → verify → destroy
Commande globale :
molecule test exécute tout automatiquement.4. Architecture d’un testrôle avec Molecule
role/
└── molecule/
└── default/
├── molecule.yml
├── converge.yml
├── verify.yml
Fichiers importants
molecule.yml→ configuration du scénarioconverge.yml→ exécution du rôleverify.yml→ tests(optionnel mais recommandé)automatisés
4.5. Installation de Molecule
Dans un venv Ansible :
pip install molecule molecule-docker#
ou
pip install molecule molecule-podman
Vérification
molecule --version
5.6. Création d’un rôle avec+ Molecule
ansible-galaxy init my_role cd my_role molecule init scenario default
Structure générée :
my_role/ └── molecule/ └── default/
6.7. Exemple de configuration molecule.yml
driver:
name: docker
platforms:
- name: instance
image: "geerlingguy/docker-ubuntu2204-ansible"ansible
privileged: true
provisioner:
name: ansible
verifier:
name: ansible
7.8. Exemple converge.yml
- name: Converge
hosts: all
tasks:
- name: Include role
include_role:
name: my_role
8. Cycle de test Molecule
molecule create # crée les containers molecule converge # applique le rôle molecule verify # lance les tests molecule destroy # supprime les environnements
Commande complète
molecule test
➡️ Exécute tout le cycle automatiquement
9. Exemple concret (cas réel)verify.yml
Objectif : installer nginx via Ansible
- name: Install nginx apt: name: nginx state: present
Test Molecule associé
- name: Verify nginxisinstallationinstalledhosts: all tasks: - name: Check nginx version command: nginx -v register:nginx_versionresult changed_when: false - name: Assert nginxexistsis installed assert: that: -nginx_version.result.rc == 0
10. Commandes essentielles
molecule create molecule converge molecule verify molecule destroy molecule test
11. Debug et inspection
molecule login# entrer dans le containermolecule destroy# reset propremolecule test-s default--debug
11.12. Drivers disponibles
- Docker (
le plus courant)standard) - Podman (rootless)
- LXC (possible mais
pluscomplexe) - VM (Vagrant)
12.13. Bonnes pratiques
- 1 rôle = 1 scénario Molecule
- toujours
utiliserajouter verify.yml - tester
surplusieursOSdistributions si possible automatiser viaintégrer CI/CD
13. Exemple CI (GitHub Actions)
name: Molecule Test on: [push] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 - name: Install dependencies run: | python3 -m pip install --upgrade pip pip install molecule molecule-docker ansible - name: Run molecule run: molecule test
14. Résumé
Molecule permet de transformertransforme un rôle Ansible en logicielsystème testable automatiquement.
- ✔
RéductionMoinsdesd’erreurs en production - ✔ Tests reproductibles
- ✔
IntégrationInfraCI/CDindustrialisée