Aller au contenu
Infrastructure as Code medium

Modules Ansible : FQCN, collections et cartographie pour le RHCE

11 min de lecture

Logo Ansible

Un module Ansible est l'unité atomique d'exécution — la brique qui fait réellement quelque chose sur le managed node : copier un fichier, installer un paquet, démarrer un service, ouvrir un port, créer un utilisateur. Le moteur Ansible orchestre, mais ce sont les modules qui agissent. Cette section couvre les modules essentiels au RHCE EX294 2026, regroupés en 7 sous-sections thématiques, après avoir posé les concepts transverses (FQCN, collections, idempotence, ansible-doc) qui s'appliquent à tous.

  • Le concept de module et sa différence avec une commande shell.
  • La notion de FQCN (ansible.builtin.dnf, community.general.sudoers) — obligatoire en 2026.
  • Les 3 grandes collections que vous utiliserez 90 % du temps : ansible.builtin, ansible.posix, community.general.
  • Comment trouver un module via ansible-doc (autorisé en examen RHCE).
  • La carte des modules par catégorie pour vous orienter.

Mon retour d'expérience — pour ceux qui veulent comprendre

Section intitulée « Mon retour d'expérience — pour ceux qui veulent comprendre »

Si l'une des cartes en haut de page vous a déjà orienté, vous êtes parti sur le bon pied. La suite de cette page s'adresse à ceux qui veulent comprendre la philosophie de cette section : pourquoi le FQCN n'est pas un caprice esthétique, pourquoi je refuse command:/shell: quand un module dédié existe, et pourquoi ansible-doc mérite plus d'attention qu'on ne lui en donne.

J'ai vu des projets Ansible passer de 5 minutes à 20 minutes d'exécution simplement parce que personne n'avait migré vers les FQCN — la résolution dynamique des modules courts ralentit considérablement sur grand parc. J'ai aussi vu des playbooks « marcher » 6 mois puis casser silencieusement quand une nouvelle collection installée a redéfini un module court. Cette section compile les habitudes que je n'aurais jamais accepté de relâcher dans un projet sérieux.

Un module est un petit programme (généralement Python) qu'Ansible transfère sur le managed node, exécute avec des paramètres précis, puis rapatrie un résultat structuré (JSON). C'est ce résultat qui dit si la tâche est ok, changed, ou failed.

- name: Installer nginx
ansible.builtin.dnf:
name: nginx
state: present

Trois propriétés distinguent un module d'un script bash classique :

  1. L'idempotence : exécuter le module deux fois donne le même résultat. Si nginx est déjà installé, le module retourne ok au lieu de changed. Pas de double-installation.
  2. Le retour structuré : Ansible reçoit un dict (changed, msg, rc, stdout, ...) directement utilisable dans register: et when:.
  3. L'agnostisme distrib : un module comme package: détecte automatiquement dnf, apt, pacman selon la cible — même playbook sur Debian et RHEL.

Règle absolue : un module dédié l'emporte toujours sur un command: ou shell:. Si vous voyez ansible.builtin.shell: dnf install -y nginx, vous savez qu'il faut le réécrire avec ansible.builtin.dnf:.

Depuis Ansible 2.10, chaque module a un nom complet sous la forme <namespace>.<collection>.<module>. C'est le FQCN :

Forme courte (déconseillée)FQCN (mandatory en 2026)
dnf:ansible.builtin.dnf:
copy:ansible.builtin.copy:
firewalld:ansible.posix.firewalld:
sudoers:community.general.sudoers:

Pourquoi c'est obligatoire : sans FQCN, Ansible doit deviner quelle collection contient le module — ambigu si plusieurs collections définissent firewalld. Avec FQCN, zéro ambiguïté, le code reste fonctionnel quand de nouvelles collections s'ajoutent.

ansible-lint --profile production échoue sur tout module sans FQCN. C'est aussi un reflex évalué au RHCE EX294 2026.

Les 3 collections que vous utiliserez 90 % du temps

Section intitulée « Les 3 collections que vous utiliserez 90 % du temps »
CollectionContenuInstallation
ansible.builtinModules cœur livrés avec ansible-core (copy, file, dnf, apt, systemd, user, group, lineinfile...)Inclus, rien à installer
ansible.posixModules POSIX/Linux (firewalld, mount, sysctl, selinux, authorized_key, sysvinit)ansible-galaxy collection install ansible.posix
community.generalTrès large catalogue communautaire (sudoers, lvol, lvg, filesystem, pamd, hostname, nmcli...)ansible-galaxy collection install community.general

Trois autres collections apparaissent ponctuellement dans le parcours :

  • community.crypto : génération de clés et certificats X.509.
  • community.hashi_vault : intégration HashiCorp Vault / OpenBao pour les secrets.
  • kubernetes.core : gestion de manifests K8s depuis Ansible.

Au RHCE 2026, vous utilisez quasi exclusivement les trois premières. Le requirements.yml d'un projet RHCE type ressemble à :

---
collections:
- name: ansible.posix
version: ">=1.5.0"
- name: community.general
version: ">=8.0.0"

Face à un nouveau besoin, trouver le module adapté est un réflexe à acquérir. La page Trouver le bon module détaille la méthode complète — recherche, évaluation qualité d'une collection, rappel sécurité supply chain (typosquatting, takeover, signatures) et garde-fous opérationnels (mirror privé, pinning).

ansible-doc est votre seule documentation autorisée pendant l'examen RHCE — apprenez à l'utiliser vite et bien.

Fenêtre de terminal
ansible-doc ansible.builtin.copy # Doc complète d'un module
ansible-doc -l # Liste tous les modules
ansible-doc -l ansible.posix # Liste les modules d'une collection
ansible-doc -s ansible.builtin.copy # Snippet YAML prêt à copier
ansible-doc -t lookup file # Doc d'un lookup plugin

Le snippet -s est le plus précieux en examen — il génère un YAML annoté que vous adaptez en quelques secondes :

Fenêtre de terminal
$ ansible-doc -s ansible.builtin.copy
- name: Copy files to remote locations
ansible.builtin.copy:
src: # source path
dest: # destination path (required)
owner: # name of the user
group: # name of the group
mode: # permissions (e.g. '0644')

Les modules sont regroupés par finalité métier plutôt que par ordre alphabétique — c'est plus pratique en révision RHCE.

Manipulation de fichiers, dossiers, archives — la base de toute config sous Linux.

Installer des paquets, démarrer des services, planifier des cron jobs.

Gestion des comptes locaux, clés SSH, sudoers — au programme du RHCE.

Sécurité, stockage, paramètres kernel — le cœur RHEL du RHCE.

Récupérer une URL, interroger une API REST, télécharger un installateur.

Tester l'état avant d'agir, valider après, attendre une condition.

Modules transversaux qui ne rentrent pas dans une catégorie unique : exécution directe, utilitaires, Windows.

Les modules sont au cœur de l'examen — environ 60 % des tâches du RHCE consistent à choisir le bon module et à le paramétrer correctement.

Catégorie d'objectif RHCESous-section couvrante
Gérer les paquets logicielsPaquets et services
Gérer les servicesPaquets et services
Configurer les utilisateurs et groupesUtilisateurs et groupes
Configurer le pare-feu et SELinuxSystème
Gérer le stockage (LVM, FS, mount)Système
Manipuler des fichiers de configFichiers et templates
Planifier des tâches (cron, timer)Paquets et services
Récupérer des données via HTTP/APIRéseau
Diagnostiquer un étatDiagnostic

Cinq positions tranchées que cette section assume :

  • FQCN partout, sans dérogation. ansible.builtin.copy même dans un script jetable. L'habitude se prend dès la première ligne ou ne se prend jamais. C'est un objectif RHCE 2026 explicite, et un gain de performance mesurable sur grand parc.
  • Module dédié, toujours. Avant d'écrire command: dnf install nginx, chercher ansible-doc -l | grep dnf. Le module dédié gère idempotence, check mode, diff. command:/shell: sont des aveux d'échec — acceptables seulement quand vraiment aucun module n'existe.
  • ansible-doc plus que la doc web. La doc embarquée correspond exactement à votre version installée. À l'examen RHCE, vous n'avez pas internetansible-doc -s <module> est votre seule planche de salut. Apprenez à le lire vite.
  • requirements.yml versionné dès le premier projet. ansible.posix et community.general sont nécessaires pour 90 % des cas réels. Pinning strict (version: ">=1.5.0"), pas de latest. Reproductibilité non négociable.
  • Vérifier avant de copier-coller un module IA. Les LLM inventent des modules qui n'existent pas (ansible.builtin.docker_container au lieu de community.docker.docker_container). ansible-doc <fqcn> confirme ou réfute en 2 secondes — c'est gratuit.

Cinq erreurs typiques sur les modules — chacune source de bug ou d'échec à l'examen :

  • Modules non FQCN. firewalld: au lieu de ansible.posix.firewalld:. Erreur résolution si la collection n'est pas installée, performance dégradée, et ansible-lint --profile production échoue. FQCN partout, point.
  • command: ou shell: quand un module dédié existe. Cas typique : command: systemctl restart nginx au lieu de ansible.builtin.systemd_service: name=nginx state=restarted. Le module dédié gère idempotence et check modecommand: perd les deux.
  • state: installed, state: started, state: running au lieu des valeurs canoniques (present, started). Chaque module a son vocabulaire — ansible-doc <module> liste les valeurs valides. Inventer une valeur = failed: invalid state.
  • Recopier un snippet IA sans ansible-doc. Le module n'existe pas, l'option a été renommée, ou la collection requise n'est pas dans requirements.yml. Vérifier coûte 2 secondes, débugger coûte 20 minutes.
  • Ignorer le rappel supply chain Galaxy. Pinner les versions, vérifier les signatures GPG, préférer un mirror privé en entreprise. Une collection compromise vous donne shell root sur tout votre parc — c'est le type d'incident qui termine une carrière.
  • Un module = unité atomique idempotente. Toujours préférer un module dédié à command: ou shell:.
  • FQCN obligatoire en 2026 : <namespace>.<collection>.<module>.
  • 3 collections = 90 % de votre travail : ansible.builtin, ansible.posix, community.general.
  • ansible-doc est votre seule doc autorisée au RHCE — maîtrisez -s, -l, -t.
  • 7 sous-sections thématiques : fichiers, paquets-services, utilisateurs, système, réseau, diagnostic, compléments.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn