Collections et Galaxy
Ansible Galaxy et le système de collections permettent de réutiliser du code Ansible publié par la communauté ou par Red Hat. Gérer ses dépendances de rôles et collections via un fichier requirements.yml versionné est une pratique de base pour tout projet sérieux.
Rôles Galaxy vs Collections
Historiquement, Ansible Galaxy distribuait des rôles individuels. Depuis Ansible 2.9, les collections sont le format privilégié : elles regroupent des modules, des plugins, des rôles et des playbooks dans un namespace unifié (namespace.collection).
- Rôles Galaxy : toujours disponibles, nombreux, qualité variable
- Collections : format standardisé, versionnées, namespace clair, support des modules custom
Collections intégrées
Ansible installe par défaut la collection ansible.builtin qui contient les modules essentiels (apt, copy, template, service, etc.). D'autres collections sont disponibles hors-boîte selon la version d'Ansible installée :
ansible.posix: modules POSIX (authorized_key, firewalld, sysctl, mount)ansible.utils: utilitaires (manipulation IP, validation)community.general: modules communautaires généraux (docker_container, ufw, etc.)community.postgresql: gestion PostgreSQLcommunity.mysql: gestion MySQL/MariaDBamazon.aws: AWSgoogle.cloud: GCPazure.azcollection: Azure
requirements.yml : gérer les dépendances
# requirements.yml
---
collections:
- name: community.general
version: ">=7.0.0"
- name: community.postgresql
version: "3.4.0"
- name: ansible.posix
- name: netbox.netbox
version: ">=3.14.0"
roles:
- name: geerlingguy.docker
version: "7.1.0"
- name: geerlingguy.nginx# Installer toutes les dépendances
ansible-galaxy install -r requirements.yml
ansible-galaxy collection install -r requirements.yml
# Ou les deux en une commande (Ansible 2.10+)
ansible-galaxy install -r requirements.ymlInstallation et chemins
# Installer une collection dans le projet (recommandé pour la reproductibilité)
ansible-galaxy collection install community.general -p ./collections/
# Installer globalement
ansible-galaxy collection install community.general
# Lister les collections installées
ansible-galaxy collection listPour un projet d'équipe, l'installation dans ./collections/ et ./roles/ avec un requirements.yml versionné garantit que tout le monde utilise les mêmes versions. Ajouter ces répertoires au .gitignore et laisser chaque utilisateur lancer ansible-galaxy install -r requirements.yml.
Utiliser une collection
# Nom complet
- community.general.ufw:
rule: allow
port: 443
proto: tcp
# Import de collection en tête de playbook (évite le préfixe)
- hosts: all
collections:
- community.general
tasks:
- ufw:
rule: allow
port: 443Utilisation offline
Dans des environnements sans accès Internet, les collections peuvent être téléchargées sous forme d'archive et installées localement :
# Télécharger sans installer
ansible-galaxy collection download community.general -p /tmp/collections/
# Installer depuis une archive locale
ansible-galaxy collection install /tmp/collections/community-general-7.0.0.tar.gz