Where do modules come from beyond ansible.builtin, and why do module names like community.general.apache2_module have three parts?
Since ansible-core 2.11 modules are organised in content collections; only ansible.builtin is always available. Other collections come with the execution environment or are downloaded from Automation Hub, a private hub or Ansible Galaxy into the project's collections directory. The three-part name is the fully qualified collection name: namespace, collection, module.
A fully qualified collection name (FQCN) reads namespace.collection.module:
| FQCN | Namespace | Collection | Module |
|---|---|---|---|
ansible.builtin.copy |
ansible | builtin | copy |
ansible.posix.authorized_key |
ansible | posix | authorized_key |
community.general.apache2_module |
community | general | apache2_module |
The short name apache2_module still works if the collection is installed, but the FQCN says unambiguously which code runs, which matters once two collections ship a module with the same short name. ansible-doc apache2_module shows the full name and the path under ansible_collections/community/general/, so you know where it came from.
Where to get collections:
- ansible.builtin: always there, part of ansible-core.
- Execution environment: the default container image (for example
ee-supported-rhel8) already includes more collections. - Automation Hub (Red Hat, certified content, via console.redhat.com), a private hub, or the community's Ansible Galaxy (galaxy.ansible.com), installed with
ansible-galaxy collection installinto the project'scollections/directory. ansible-navigator collectionsbrowses what's available in an interactive UI.
Go deeper:
Using Ansible collections (official docs) — installing, listing and referencing collections by FQCN.
Ansible Galaxy — search community collections and roles.
ansible.builtin collection (official docs) — the collection that is always available.