
Avant de produire ses propres collections, il faut savoir lire celles qui existent. Cette page ouvre le capot : ansible-galaxy collection list/info pour l'inventaire, lecture d'un galaxy.yml, structure interne plugins/{modules,filter,...}/, signification de meta/runtime.yml, et compréhension du FQCN (Fully Qualified Collection Name) obligatoire en 2026 (ansible.builtin.copy, jamais copy:).
À la fin, vous saurez inspecter n'importe quelle collection avant de l'utiliser, distinguer un rôle standalone d'un rôle dans une collection, et trouver un module avec son FQCN exact via ansible-doc.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »ansible-galaxy collection list/infopour l'inventaire des collections installées.- Lecture d'un
galaxy.yml: namespace, name, version, dependencies, tags. - Structure interne :
plugins/,roles/,playbooks/,meta/runtime.yml. - FQCN obligatoire en 2026 :
namespace.collection.plugin. - Différence rôle standalone vs rôle dans collection.
ansible-doc <FQCN>pour la doc embarquée (plus fiable que internet).
Prérequis
Section intitulée « Prérequis »- Ansible 2.18+ installé.
ansible-galaxy collection install community.general --forceau moins une fois pour avoir une collection à inspecter.
Le FQCN, pierre angulaire 2026
Section intitulée « Le FQCN, pierre angulaire 2026 »Chaque ressource Ansible se nomme désormais avec un Fully Qualified Collection Name :
namespace.collection.pluginTrois exemples concrets :
| FQCN | Signification |
|---|---|
ansible.builtin.copy | Module copy de la collection builtin du namespace ansible (livré avec ansible-core) |
community.general.archive | Module archive de la collection general du namespace community |
kubernetes.core.k8s | Module k8s de la collection core du namespace kubernetes |
Avantages :
- Pas de conflit :
ansible.posix.firewalldetcommunity.general.firewalldpeuvent coexister. - Provenance claire : on voit immédiatement d'où vient un module.
- Lint compatible : la règle
fqcn-builtinsd'ansible-lint --profile productionimpose le FQCN partout.
Inspecter les collections installées
Section intitulée « Inspecter les collections installées »ansible-galaxy collection listSortie typique :
Collection Version----------------------------- -------ansible.posix 2.0.0community.general 10.5.0kubernetes.core 5.1.1
# /home/bob/.ansible/collections/ansible_collectionsCollection Version----------------------------- -------community.docker 4.0.0🔍 Observation : list agrège toutes les sources : système (/usr/share/ansible/), user (~/.ansible/), virtualenv. Plusieurs versions d'une même collection peuvent coexister, celle utilisée dépend de l'ordre dans ANSIBLE_COLLECTIONS_PATH.
Inspecter une collection précise
Section intitulée « Inspecter une collection précise »ansible-galaxy collection info community.generalSortie :
Collection: community.generalVersion: 10.5.0Path: /usr/share/ansible/collections/ansible_collections/community/generalDocumentation: https://docs.ansible.com/.../community/general/Repository: https://github.com/ansible-collections/community.generalIssues: https://github.com/ansible-collections/community.general/issuesLicense: GPL-3.0-or-laterAuthors: - Ansible Community🔍 Observation : équivalent de dnf info ou apt show. Référence pour vérifier qu'une collection vient bien de Galaxy public et pas d'une source compromise.
Structure standard d'une collection
Section intitulée « Structure standard d'une collection »tree -L 2 /usr/share/ansible/collections/ansible_collections/community/general/Structure attendue :
Répertoirecommunity.general/
- galaxy.yml
- README.md
Répertoiremeta/
- runtime.yml
Répertoireplugins/
Répertoiremodules/
- …
Répertoirefilter/
- …
Répertoirelookup/
- …
Répertoireinventory/
- …
Répertoirecallback/
- …
Répertoireaction/
- …
Répertoireroles/
- …
Répertoireplaybooks/
- …
Répertoirechangelogs/
- …
Répertoiredocs/
- …
Règles 2026 :
plugins/modules/est le seul emplacement valide pour les modules custom (lelibrary/legacy n'est plus reconnu).plugins/<type>/par type de plugin :filter,lookup,inventory,callback,action,connection,module_utils.roles/<name>/suit la même structure qu'un rôle standalone (tasks/,handlers/,defaults/...).playbooks/: playbooks fournis par la collection, accessibles viaansible-playbook collection_namespace.playbook.
Le galaxy.yml
Section intitulée « Le galaxy.yml »namespace: communityname: generalversion: 10.5.0readme: README.mdauthors: - "Ansible Community"description: "Collection of community modules"license: - GPL-3.0-or-latertags: # ← OBLIGATOIRE pour publier - linux - windows - clouddependencies: ansible.posix: ">=1.5.4"repository: https://github.com/ansible-collections/community.generaldocumentation: https://docs.ansible.com/.../community/general/issues: https://github.com/ansible-collections/community.general/issuesbuild_ignore: - .github - .venv - tests/outputChamps critiques :
| Champ | Rôle |
|---|---|
namespace | Préfixe du FQCN (community, kubernetes, acme) |
name | Nom court (general, core, webapp) |
version | Semver strict (10.5.0) |
tags: | Obligatoire pour publier sur Galaxy |
dependencies: | Autres collections requises avec contraintes semver |
build_ignore: | Exclusions du tarball (.git/, .venv/, secrets) |
Le meta/runtime.yml
Section intitulée « Le meta/runtime.yml »cat /usr/share/ansible/collections/ansible_collections/community/general/meta/runtime.yml | head -10Exemple typique :
---requires_ansible: ">=2.15.0"
plugin_routing: modules: sudoers: redirect: community.general.sudoersDeux sections clés :
requires_ansible:: seuil minimum d'ansible-core. Sans,ansible-test sanityéchoue.plugin_routing.modules.<old>.redirect: sert à la migration, redirige un ancien nom court vers le nouveau FQCN. Pattern essentiel pour la rétrocompatibilité (voir Migration rôle → collection).
Trouver un module via FQCN
Section intitulée « Trouver un module via FQCN »# Lister tous les modules d'une collectionansible-doc -l community.general | head -10
# Trouver un module par mot-cléansible-doc -l | grep -i archive
# Lire la doc d'un moduleansible-doc community.general.archive🔍 Observation cruciale : ansible-doc <FQCN> affiche la doc de la version installée, plus fiable que la doc internet (qui peut être plus récente). Si votre EE a community.general 9.0.0, la doc affichée correspond à 9.0.0, pas à 10.5.0.
Différence rôle standalone vs rôle dans collection
Section intitulée « Différence rôle standalone vs rôle dans collection »| Type | Distribution | Installation | Usage |
|---|---|---|---|
| Rôle standalone | ansible-galaxy role install geerlingguy.docker | ~/.ansible/roles/geerlingguy.docker/ | roles: [geerlingguy.docker] |
| Rôle dans collection | ansible-galaxy collection install community.general | ~/.ansible/collections/.../community/general/roles/ | roles: [community.general.bind] |
🔍 Observation : le format standalone est legacy depuis ansible-core 2.10. Galaxy NG (2026) ne supporte plus les rôles standalone, toute nouvelle distribution publie en collection. Si vous avez un rôle standalone à maintenir, voir Migration rôle → collection.
Mettre en pratique
Section intitulée « Mettre en pratique »Savoir qu'un FQCN se lit namespace.collection.plugin ne remplace pas l'avoir cherché soi-même sur une collection installée. Ce lab vous fait lister l'existant, ouvrir un galaxy.yml, parcourir l'arborescence plugins/, roles/ et playbooks/, puis retrouver un module précis par son nom complet. Le résultat attendu est un inventaire des collections déposé sur db1.lab, que la correction relit sur la machine plutôt que dans votre terminal.
À retenir
Section intitulée « À retenir »- FQCN =
namespace.collection.plugin, obligatoire en 2026. ansible-galaxy collection list/infopour explorer l'installé.galaxy.yml: métadonnées + dependencies + tags obligatoires.meta/runtime.yml: seuil ansible-core + redirects de modules.- Structure fixe :
plugins/{modules,filter,...}/,roles/,playbooks/. ansible-doc <FQCN>: doc de la version installée, plus fiable que internet.- Rôles standalone = legacy. Tout passe par les collections en 2026.
Pour aller plus loin
Section intitulée « Pour aller plus loin »- Créer une collection custom : la même structure, vue de l'intérieur, en la construisant soi-même.
- Pipeline CI en matrice : tester une collection sur plusieurs versions d'ansible-core et de Python.
- Migration d'un rôle vers une collection : le chemin à suivre quand vos rôles standalone doivent rejoindre le format actuel.