Comprendre et utiliser les modules Ansible
Mise à jour :
Les modules Ansible sont les briques essentielles pour automatiser la gestion de configuration et l’exécution de tâches sur des systèmes distants. Ils permettent de simplifier les opérations en fournissant des abstractions de haut niveau pour interagir avec divers systèmes, services et applications. Dans ce guide, je vous présente les principaux modules Ansible, leur organisation en collections, et comment les utiliser efficacement dans vos playbooks.**
Introduction aux modules Ansible
Les modules Ansible sont au cœur de l’automatisation. Un module est une petite unité de code autonome qui exécute une tâche spécifique sur une machine cible. Par exemple : copier un fichier, redémarrer un service, créer un utilisateur ou interroger une API.
Ils permettent d’éviter d’écrire des scripts shell longs et complexes : dans un playbook, on déclare ce qu’on veut faire, et le module s’occupe des détails. Ansible se charge d’exécuter ce code sur les hôtes cibles via SSH (ou WinRM pour Windows), puis de rapporter le résultat.
Définition et rôle des modules (rappel)
Un module est appelé depuis un playbook ou une ligne de commande. Par
exemple, ce playbook utilise le module copy
:
- name: Copier un fichier sur le serveur hosts: web tasks: - name: Copier index.html ansible.builtin.copy: src: files/index.html dest: /var/www/html/index.html owner: www-data group: www-data mode: '0644'
Ici, copy
sait comment transférer le fichier et vérifier son état. Il gère
aussi l’idempotence : si le fichier est déjà présent et inchangé, il ne fera
rien.
Différence entre modules et plugins
Attention : un module agit (il exécute une tâche), tandis qu’un plugin étend les fonctionnalités d’Ansible (par exemple, les stratégies de boucles, les filtres, les callbacks). Ils jouent des rôles complémentaires, mais ils sont organisés et utilisés différemment.
Organisation en collections
Depuis Ansible 2.10, les modules sont regroupés dans des collections. Une collection est un paquet structuré qui peut contenir :
- Des modules
- Des rôles
- Des plugins
- De la documentation
- Des tests
Par exemple, la collection officielle ansible.posix
contient des modules pour
les systèmes POSIX (comme ansible.posix.authorized_key
), tandis que
community.mysql
regroupe les modules pour MySQL.
Pour installer une collection, on utilise :
ansible-galaxy collection install community.mysql
Et dans un playbook, on appelle le module avec son namespace :
- name: Créer une base MySQL community.mysql.mysql_db: name: ma_base state: present
Cette organisation facilite la modularité, les mises à jour indépendantes et l’extension des capacités d’Ansible sans attendre une nouvelle version du cœur du projet. Vous pouvez explorer toutes les collections disponibles sur Ansible Galaxy ↗.
Pour voir les modules disponibles dans une collection :
ansible-doc -l community.mysql
Les collections rendent Ansible plus puissant et évolutif, tout en gardant une approche modulaire et claire.
Les principales collections Ansible
Voici quelques collections officielles incontournables :
Collection | Description |
---|---|
ansible.builtin | Modules de base inclus dans Ansible (ex. copy, yum). |
ansible.posix | Modules POSIX (clés SSH, ACL, limites système). |
ansible.windows | Modules pour Windows (ex. win_copy, win_service). |
community.general | Modules généraux maintenus par la communauté. |
amazon.aws | Modules pour AWS (EC2, S3, RDS, etc.). |
azure.azcollection | Modules pour Microsoft Azure. |
google.cloud | Modules pour Google Cloud Platform. |
community.mysql | Modules pour gérer MySQL et MariaDB. |
community.docker | Modules pour Docker et conteneurs. |
community.network | Modules pour la gestion des réseaux. |
kubernetes.core | Modules pour Kubernetes. |
La collection ansible.builtin
La collection de base, incontournable pour toutes les automatisations avec Ansible.
Présentation
La collection ansible.builtin
regroupe tous les modules de base inclus par
défaut dans Ansible. Elle est toujours disponible sans installation
supplémentaire et couvre l’ensemble des tâches fondamentales : gestion des
systèmes, manipulation de fichiers, contrôle des services, gestion réseau,
exécution de commandes, etc.
C’est la boîte à outils universelle pour tout administrateur ou développeur utilisant Ansible, quelle que soit la plateforme cible.
Portée fonctionnelle
Pour vous repérer dans la collection, voici une cartographie des principaux domaines couverts, avec quelques modules emblématiques :
Domaine | Exemples de modules | Pour quoi faire ? | Lien documentation |
---|---|---|---|
Exécution de commandes | raw , shell , command , script | Exécuter des commandes ou scripts sur les hôtes distants. | Exécution de commandes |
Gestion des fichiers | copy , file , template , lineinfile , replace , blockinfile , stat , slurp , fetch , tempfile , get url , unarchive , git | Copier, modifier, générer ou gérer des fichiers et répertoires. | Gestion des fichiers |
Gestion des paquets | package , apt , yum , dnf , pip | Installer, mettre à jour ou supprimer des paquets logiciels. | Gestion des paquets |
Gestion des services | service , systemd_service , sysvinit | Démarrer, arrêter, activer ou désactiver des services système. | Gestion des services |
Tests et assertions | assert , fail , validate_argument_spec | Vérifier des conditions, provoquer des erreurs, valider des arguments dans les playbooks. | Assertions et validation |
Contrôle de flux | include_vars , include_tasks , import_tasks , import_playbook , include_role , meta | Contrôler l’ordre d’exécution, inclure dynamiquement des tâches ou rôles, gérer le flux du playbook. | Contrôle de flux |
Configuration système | user , group , getent , cron , hostname , reboot | Gérer les utilisateurs, groupes, tâches planifiées, points de montage, paramètres noyau, etc. | Gestion de la configuration |
Utilitaires divers | add_host , group_by , setup , wait_for , wait_for_connection pause , debug | Ajouter des hôtes, créer des groupes, récupérer des faits, attendre des conditions, afficher des messages. | Modules divers |
Gardez en tête que le préfixe ansible.builtin.
vous garantit que le module
est inclus nativement dans Ansible et ne nécessite aucune installation
supplémentaire.
La collection ansible.posix
La collection incontournable pour l’automatisation des systèmes POSIX (Linux, Unix, BSD) avec Ansible.
Présentation
La collection ansible.posix
regroupe un ensemble de modules et plugins dédiés
à la gestion et à la configuration des systèmes compatibles POSIX, c’est-à-dire
la majorité des distributions Linux, Unix et BSD. Elle couvre des besoins
essentiels pour l’administration système : gestion des clés SSH, des ACL, des
limites de ressources, des permissions, des montages réseau, etc.
Cette collection est un complément naturel à ansible.builtin
pour tout
administrateur souhaitant automatiser la gestion fine de ses serveurs Linux/Unix
avec Ansible.
Portée fonctionnelle
Pour vous repérer dans la collection, voici une cartographie des principaux domaines couverts, avec quelques modules emblématiques :
Domaine | Exemples de modules | Pour quoi faire ? |
---|---|---|
Gestion des clés SSH | authorized_key | Ajouter ou supprimer des clés publiques SSH pour un utilisateur. |
Gestion des ACL | acl | Gérer les listes de contrôle d’accès sur les fichiers et dossiers. |
Limites de ressources | limits | Définir les limites de ressources (ulimit) pour les utilisateurs. |
Gestion des permissions | selinux , capabilities | Gérer l’état de SELinux, attribuer des capacités Linux à des fichiers. |
Montages réseau | mount , nfsmount | Monter ou démonter des systèmes de fichiers locaux ou NFS. |
Gestion des quotas | quota | Gérer les quotas disque des utilisateurs et groupes. |
Gestion des processus | firewalld , sysctl | Gérer le pare-feu firewalld, ajuster les paramètres du noyau. |
Utilitaires divers | patch , synchronize , wait_for | Appliquer des patchs, synchroniser des fichiers, attendre une condition système. |
Gardez en tête que le préfixe ansible.posix.
vous garantit que le module
est conçu pour les environnements POSIX.
La collection community.general
La « boîte à outils » la plus vaste et la plus polyvalente de l’écosystème Ansible. Si vous ignorez encore quelle collection importer pour accomplir une tâche précise, il y a de fortes chances que la réponse se trouve ici.
Présentation
Parmi les milliers de modules que compte aujourd’hui l’univers Ansible, ceux de
la collection community.general
occupent une place particulière.
Historiquement, ils formaient le « core » du projet ; ils ont ensuite été
extraits afin de permettre un rythme de publication plus rapide et d’offrir un
espace d’incubation ouvert à la communauté. La collection réunit désormais
plus de 700 modules et plugins couvrant la quasi‑totalité des besoins d’un
administrateur ou d’un développeur : configuration du système, gestion des
paquets, intégration de services SaaS, orchestration de conteneurs, supervision,
etc. En pratique, elle sert à la fois de boîte à outils généraliste pour les
petits projets et de tremplin pour les modules qui n’ont pas (encore) trouvé
leur propre maison.
Portée fonctionnelle
Pour vous repérer parmi cet inventaire XXL, il est utile d’avoir en tête la cartographie suivante. À chaque domaine je rattache quelques modules emblématiques. Pensez‑la comme un plan de métro : les stations visibles ne sont qu’une portion des arrêts disponibles, mais elles donnent le ton de la ligne.
Domaine | Exemples de modules | Pour quoi faire ? |
---|---|---|
Système & OS | alternatives , kernel_blacklist , timezone , lvg , lxd_container | Désactiver un module noyau, gérer l’heure locale, créer des volumes LVM ou lancer des conteneurs LXD. |
Gestion de paquets & langages | apk , pipx , npm , snap | Installer des dépendances, publier des CLIs, empaqueter des applications. |
Réseau & sécurité | ufw , awall , firewalld_policy , keycloak_client | Ouvrir un port, définir une politique de pare‑feu, approvisionner un client OIDC. |
Cloud & virtualisation | ali_instance , proxmox , vmadm | Créer une VM sur Alibaba Cloud, déployer un hôte sur Proxmox ou Triton. |
CI/CD & SCM | git_config , gitlab_group , jenkins_job | Ajuster la configuration Git côté client, gérer des groupes GitLab, déclarer un job Jenkins. |
Notifications & monitoring | slack , twilio , pingdom | Envoyer une alerte Slack, déclencher un SMS, créer un check HTTP. |
Bases de données & stockage | vertica_user , aerospike_migrations , btrfs_subvolume | Gérer les utilisateurs Vertica, piloter les migrations Aerospike, créer un sous‑volume Btrfs. |
Utilitaires divers | archive , read_csv , wakeonlan | (Dé)compresser des fichiers, lire un CSV en variable, réveiller un poste via WoL. |
Gardez en tête que le préfixe d’un module est souvent votre meilleur guide
d’orientation. Par exemple, tous les modules commençant par gitlab_
visent
l’API GitLab, tandis que ceux en vertica_
parlent exclusivement de la base
Vertica.
Conclusion
Les modules Ansible sont des outils puissants pour automatiser la gestion de la configuration et l’exécution de tâches sur des systèmes distants. En comprenant leur fonctionnement et en utilisant les collections appropriées, vous pouvez tirer le meilleur parti d’Ansible pour vos besoins d’automatisation. N’hésitez pas à explorer la documentation officielle et à expérimenter avec différents modules pour découvrir tout ce qu’Ansible peut offrir.