On vient d’écrire notre propre rôle Apache de A à Z. C’était l’exercice pédagogique nécessaire pour comprendre la mécanique. Mais en pratique, une question mérite d’être posée avant d’écrire le moindre rôle : quelqu’un l’a-t-il déjà fait, et bien fait ?
C’est exactement le rôle d’Ansible Galaxy : une plateforme communautaire qui héberge des milliers de rôles et collections prêts à l’emploi, mainteus par leurs auteurs, testés sur de multiples distributions, et réutilisables directement dans vos playbooks.
Chercher un rôle existant
Avant de coder, un réflexe simple : chercher sur galaxy.ansible.com si un rôle solide existe déjà pour votre besoin. Pour Docker, par exemple, le rôle geerlingguy.docker (de Jeff Geerling, auteur bien connu dans l’écosystème Ansible) est une référence largement utilisée et maintenue.
Installer un rôle avec ansible-galaxy
ansible-galaxy install geerlingguy.dockerPar défaut, le rôle s’installe dans un dossier partagé du système (~/.ansible/roles en général), accessible depuis n’importe quel projet Ansible sur la machine.
Utiliser le rôle installé
Une fois installé, il s’utilise exactement comme un rôle qu’on aurait écrit soi-même :
---
- name: Installer Docker sur les serveurs Nordika
hosts: docker-servers
become: yes
roles:
- geerlingguy.dockerLe rôle s’occupe de tout : dépôt officiel Docker, installation du paquet, démarrage du service, gestion multi-distribution — un travail déjà fait, testé, et maintenu par la communauté, plutôt que réinventé par vos soins.
requirements.yml : lister ses dépendances proprement
Installer des rôles un par un en ligne de commande fonctionne, mais devient vite ingérable dès que votre projet dépend de plusieurs rôles externes. La bonne pratique consiste à les lister dans un fichier requirements.yml, versionné avec votre projet dans Git :
# requirements.yml
---
roles:
- name: geerlingguy.docker
version: "6.1.0"
- name: geerlingguy.apache
version: "5.0.0"Et on installe tout d’un coup :
ansible-galaxy install -r requirements.ymlRemarquez le paramètre version : c’est important de l’épingler plutôt que de laisser Ansible installer « la dernière version disponible ». Sans version fixée, un rôle qui fonctionnait hier peut changer de comportement du jour au lendemain, sans que vous ayez touché à quoi que ce soit dans votre propre projet — un problème de reproductibilité qu’on retrouve dans beaucoup d’écosystèmes logiciels, pas seulement Ansible.
Les collections : au-delà des simples rôles
Galaxy distribue aussi des collections : des paquets qui regroupent des modules, des rôles, et parfois des plugins, autour d’un même thème (par exemple community.mysql, qu’on a déjà croisé dans le lab découverte de cette formation pour gérer MariaDB). On les installe de la même façon :
ansible-galaxy collection install community.mysqlOu, toujours mieux, listées dans requirements.yml :
# requirements.yml
---
roles:
- name: geerlingguy.docker
version: "6.1.0"
collections:
- name: community.mysql
version: "3.9.0"ansible-galaxy install -r requirements.ymlAuditer un rôle avant de l’utiliser en production
Un rôle communautaire reste du code écrit par un tiers, exécuté avec des droits élevés (become: yes) sur vos serveurs. Avant de l’utiliser sur un environnement sensible, quelques réflexes simples :
- Consulter le nombre d’étoiles/téléchargements et la date de dernière mise à jour sur Galaxy.
- Parcourir rapidement
tasks/main.ymlsur le dépôt GitHub du rôle — ça reste du YAML lisible, pas un binaire opaque. - Préférer les rôles maintenus par des auteurs reconnus (comme Jeff Geerling) plutôt qu’un rôle abandonné depuis trois ans.
Ce qu’il faut retenir
- Avant d’écrire un rôle, vérifiez si un rôle communautaire solide existe déjà sur Galaxy.
ansible-galaxy install <nom>pour un rôle ponctuel,requirements.yml+ansible-galaxy install -r requirements.ymldès que le projet en dépend durablement.- Toujours épingler une
versionprécise dansrequirements.yml, pour éviter qu’un rôle change de comportement sans que vous l’ayez décidé. - Un rôle externe reste du code tiers exécuté avec des droits élevés : un minimum de vérification avant de l’utiliser en production reste un bon réflexe.