Ansible Galaxy
Ansible Galaxy est une plateforme communautaire qui permet aux utilisateurs de partager, découvrir et réutiliser des rôles et collections Ansible. C'est un dépôt centralisé où les utilisateurs peuvent publier leurs contributions et accéder à celles des autres. Le site web d'Ansible Galaxy est accessible à l'adresse suivante : https://galaxy.ansible.com/
Il est avantageux d'utiliser Ansible Galaxy pour plusieurs raisons :
- Réutilisation : Accès à une vaste bibliothèque de rôles et collections préconçus, ce qui permet de gagner du temps et d'éviter de réinventer la roue.
- Communauté : Bénéficier des contributions de la communauté Ansible, ce qui peut inclure des rôles pour des applications populaires, des configurations spécifiques, etc.
- Standardisation : Utiliser des rôles bien conçus et maintenus par la communauté peut aider à standardiser les pratiques de configuration et de déploiement.
- Facilité d'intégration : Les rôles et collections d'Ansible Galaxy peuvent être facilement intégrés dans vos propres playbooks Ansible.
Rôles et Collections
Ansible Galaxy propose deux principaux types de contenus : les rôles et les collections.
- Rôles : Un rôle est une unité de configuration Ansible qui regroupe des tâches, des variables, des fichiers, des templates et des handlers liés à une fonctionnalité spécifique. Par exemple, un rôle peut être dédié à l'installation et à la configuration d'un serveur web. Nous avons vu les rôles au cours précédent.
- Collections : Une collection est un ensemble de rôles, modules, plugins et autres contenus Ansible regroupés sous un même nom. Les collections permettent de distribuer et de gérer plusieurs rôles et modules liés à une application ou une technologie spécifique. Voici la structure typique d'une collection :
namespace.collection_name/
├── galaxy.yml # Métadonnées de la collection
├── README.md
├── plugins/
│ ├── modules/ # Modules personnalisés
│ ├── filters/ # Filtres Jinja2 personnalisés
│ ├── lookups/ # Plugins de lookup
│ └── inventory/ # Plugins d'inventaire
├── roles/
│ ├── role1/
│ └── role2/
├── playbooks/
│ └── example.yml
└── docs/
└── documentation.md
Utilisation d'Ansible Galaxy
Pour utiliser Ansible Galaxy, vous pouvez suivre ces étapes de base :
- Recherche de rôles/collections : Utilisez le site web d'Ansible Galaxy pour rechercher des rôles ou collections correspondant à vos besoins.
- Installation : Utilisez la commande
ansible-galaxypour installer des rôles ou collections. Par exemple, pour installer un rôle :
Pour installer une collection :ansible-galaxy install nom_du_roleansible-galaxy collection install namespace.collection_name - Utilisation dans les playbooks : Une fois installés, vous pouvez inclure les rôles ou collections dans vos playbooks Ansible. Par exemple, pour utiliser un rôle :
Pour utiliser une collection, vous pouvez référencer ses modules ou rôles directement dans votre playbook :- hosts: serveurs roles: - nom_du_role- hosts: serveurs tasks: - name: Utiliser un module de la collection namespace.collection_name.module_name: param1: valeur1 - Publication : Si vous avez créé vos propres rôles ou collections, vous pouvez les publier sur Ansible Galaxy pour les partager avec la communauté en utilisant la commande :
ansible-galaxy collection publish chemin_vers_la_collection
Fichier requirements.yml
Pour gérer les dépendances de rôles et collections dans vos projets Ansible, vous pouvez utiliser un fichier requirements.yml. Ce fichier liste les rôles et collections nécessaires pour votre projet, ce qui facilite leur installation. C'est l'équivalent d'un fichier package.json en Node.js ou requirements.txt en Python.
Voici un exemple de fichier requirements.yml :
---
roles:
- name: geerlingguy.nginx
version: 3.1.0
- name: geerlingguy.mysql
version: 2.9.5
collections:
- name: ansible.posix
version: 1.3.0
- name: community.general
version: 3.4.0
Pour installer les rôles et collections listés dans le fichier requirements.yml, vous pouvez utiliser la commande suivante :
ansible-galaxy install -r requirements.yml
Création d'un rôle avec Ansible Galaxy
Pour créer un nouveau rôle avec Ansible Galaxy, vous pouvez utiliser la commande ansible-galaxy init. Cette commande génère la structure de répertoires et les fichiers nécessaires pour un rôle Ansible.
Voici comment créer un nouveau rôle :
ansible-galaxy init nom_du_role
Cela créera un répertoire nom_du_role avec la structure suivante :
nom_du_role/
├── defaults/main.yml
├── files/
├── handlers/main.yml
├── meta/main.yml
├── tasks/main.yml
├── templates/
├── tests/
│ ├── inventory
│ └── test.yml
└── vars/main.yml
C'est l'équivalent de créer les fichiers et dossiers manuellement, mais de manière automatisée et standardisée. Vous pouvez ensuite remplir les fichiers avec les tâches, variables, handlers, etc., nécessaires pour votre rôle.
Collections populaires de Ansible Galaxy
Ansible Galaxy héberge de nombreuses collections populaires qui couvrent une variété de cas d'utilisation. En voici une liste non-exhaustive :
Collections officielles Ansible
ansible.builtin
- Incluse par défaut
- Modules de base d'Ansible
copy,template,service,user, etc.
ansible.posix
- Modules pour systèmes POSIX (Linux/Unix)
firewalld,mount,selinux, etc.
ansible.windows
- Modules pour Windows
- Inclus dans Ansible Core depuis 2.10
Collections communautaires
community.general
- Collection vaste et variée
- Modules pour de nombreux cas d'usage
homebrew,snap,terraform, etc.
community.mysql
- Gestion de MySQL/MariaDB
- Création de bases, utilisateurs, réplication
community.postgresql
- Gestion de PostgreSQL
- Administration complète de PostgreSQL
community.docker
- Gestion de Docker
- Conteneurs, images, réseaux, volumes
community.kubernetes
- Gestion de Kubernetes
- Déploiements, services, configmaps
Collections cloud
amazon.aws
- Gestion des ressources AWS
- EC2, S3, RDS, VPC, etc.
azure.azcollection
- Gestion Microsoft Azure
- VM, Storage, Networks, etc.
google.cloud
- Gestion Google Cloud Platform
- Compute Engine, Cloud Storage, etc.