Aller au contenu

Comprendre et utiliser les modules Ansible

Mise à jour :

Logo Ansible

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 :

Terminal window
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 :

Terminal window
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 :

CollectionDescription
ansible.builtinModules de base inclus dans Ansible (ex. copy, yum).
ansible.posixModules POSIX (clés SSH, ACL, limites système).
ansible.windowsModules pour Windows (ex. win_copy, win_service).
community.generalModules généraux maintenus par la communauté.
amazon.awsModules pour AWS (EC2, S3, RDS, etc.).
azure.azcollectionModules pour Microsoft Azure.
google.cloudModules pour Google Cloud Platform.
community.mysqlModules pour gérer MySQL et MariaDB.
community.dockerModules pour Docker et conteneurs.
community.networkModules pour la gestion des réseaux.
kubernetes.coreModules 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 :

DomaineExemples de modulesPour quoi faire ?Lien documentation
Exécution de commandesraw, shell, command, scriptExécuter des commandes ou scripts sur les hôtes distants.Exécution de commandes
Gestion des fichierscopy, file, template, lineinfile, replace, blockinfile, stat, slurp, fetch, tempfile, get url, unarchive, gitCopier, modifier, générer ou gérer des fichiers et répertoires.Gestion des fichiers
Gestion des paquetspackage, apt, yum, dnf, pipInstaller, mettre à jour ou supprimer des paquets logiciels.Gestion des paquets
Gestion des servicesservice, systemd_service, sysvinitDémarrer, arrêter, activer ou désactiver des services système.Gestion des services
Tests et assertionsassert, fail, validate_argument_specVérifier des conditions, provoquer des erreurs, valider des arguments dans les playbooks.Assertions et validation
Contrôle de fluxinclude_vars, include_tasks, import_tasks, import_playbook, include_role, metaContrô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èmeuser, group, getent, cron, hostname, rebootGérer les utilisateurs, groupes, tâches planifiées, points de montage, paramètres noyau, etc.Gestion de la configuration
Utilitaires diversadd_host, group_by, setup, wait_for, wait_for_connection pause, debugAjouter 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 :

DomaineExemples de modulesPour quoi faire ?
Gestion des clés SSHauthorized_keyAjouter ou supprimer des clés publiques SSH pour un utilisateur.
Gestion des ACLaclGérer les listes de contrôle d’accès sur les fichiers et dossiers.
Limites de ressourceslimitsDéfinir les limites de ressources (ulimit) pour les utilisateurs.
Gestion des permissionsselinux, capabilitiesGérer l’état de SELinux, attribuer des capacités Linux à des fichiers.
Montages réseaumount, nfsmountMonter ou démonter des systèmes de fichiers locaux ou NFS.
Gestion des quotasquotaGérer les quotas disque des utilisateurs et groupes.
Gestion des processusfirewalld, sysctlGérer le pare-feu firewalld, ajuster les paramètres du noyau.
Utilitaires diverspatch, synchronize, wait_forAppliquer 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.

DomaineExemples de modulesPour quoi faire ?
Système & OSalternatives, kernel_blacklist, timezone, lvg, lxd_containerDésactiver un module noyau, gérer l’heure locale, créer des volumes LVM ou lancer des conteneurs LXD.
Gestion de paquets & langagesapk, pipx, npm, snapInstaller des dépendances, publier des CLIs, empaqueter des applications.
Réseau & sécuritéufw, awall, firewalld_policy, keycloak_clientOuvrir un port, définir une politique de pare‑feu, approvisionner un client OIDC.
Cloud & virtualisationali_instance, proxmox, vmadmCréer une VM sur Alibaba Cloud, déployer un hôte sur Proxmox ou Triton.
CI/CD & SCMgit_config, gitlab_group, jenkins_jobAjuster la configuration Git côté client, gérer des groupes GitLab, déclarer un job Jenkins.
Notifications & monitoringslack, twilio, pingdomEnvoyer une alerte Slack, déclencher un SMS, créer un check HTTP.
Bases de données & stockagevertica_user, aerospike_migrations, btrfs_subvolumeGérer les utilisateurs Vertica, piloter les migrations Aerospike, créer un sous‑volume Btrfs.
Utilitaires diversarchive, 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.