
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.
Lab pratique
Section intitulée « Lab pratique »Le lab collections/decouvrir (labs/collections/decouvrir/) reproduit ce parcours avec 5 tests pytest et un challenge final qui dépose un inventaire des collections sur db1.lab via ansible-galaxy collection list.
À 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.