Skip to main content

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 playbooksinfrastructures indirectementde manière reproductible
  • automatiser les tests CI/CD
  • éviter les régressions infraen production

2. Pourquoi utiliser Molecule ?

Problème sansSans Molecule :
  • LesTests manuels des rôles Ansible sont testés “à la main”
  • LesErreurs erreurs arriventdécouvertes en production
  • Pas deAucune reproductibilité
Avec Molecule :
  • Tests automatiques des rôlesautomatisés
  • Environnements jetables (containers)
  • ReproductibilitéValidation totalesystématique des rôles

3. Le cycle Molecule (IMPORTANT)

Molecule fonctionne selon un cycle standard :

create → converge → verify → destroy
Étape Rôle Explication Create Créer l’environnement Container ou VM vierge Converge Appliquer le rôle Exécution Ansible Verify Tester Validation du résultat Destroy Nettoyer Suppression de l’environnement
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énario
  • converge.yml → exécution du rôle
  • verify.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 nginx isinstallation
  installedhosts: all
  tasks:

    - name: Check nginx version
      command: nginx -v
      register: nginx_versionresult
      changed_when: false

    - name: Assert nginx existsis 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 container
molecule destroy
# reset propre
molecule test -s default --debug

11.12. Drivers disponibles

  • Docker (le plus courant)standard)
  • Podman (rootless)
  • LXC (possible mais plus complexe)
  • VM (Vagrant)
ImportantAttention :
Dans un LXC, Docker peutdans nécessiterLXC nécessite nesting=1 côté hôte Proxmox.

12.13. Bonnes pratiques

  • 1 rôle = 1 scénario Molecule
  • toujours utiliserajouter verify.yml
  • tester sur plusieurs OSdistributions 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éductionMoins des d’erreurs en production
  • ✔ Tests reproductibles
  • IntégrationInfra CI/CDindustrialisée

Conclusion : Molecule est l’outil standard pour industrialiser et fiabiliser les rôles Ansible.