2022-09-29 13:12 Temps de lecture : 12 min

Tout ce que tu as besoin de savoir

Ansible, un outil de gestion de configuration open source reconnu, s'accompagne d'Ansible Galaxy, un référentiel dédié aux rôles Ansible.

En tant qu'administrateur système débutant, vous pourriez n'avoir qu'une poignée de playbooks. Cependant, à mesure que vos compétences en automatisation progressent et que vous vous familiarisez avec Ansible, vous découvrirez les meilleures pratiques. De même, l'importance d'Ansible Galaxy deviendra de plus en plus évidente au fur et à mesure que votre collection de playbooks s'élargira.

Qu'est-ce qu'Ansible Galaxy ?

Ansible Galaxy est une plateforme web open source servant de référentiel pour le contenu Ansible, notamment les rôles et les collections. C'est un lieu où vous pouvez partager vos créations et bénéficier de celles des autres.

Si vous rencontrez des difficultés avec l'automatisation via Ansible, ou si vous avez besoin d'une solution préconçue pour démarrer vos projets, Ansible Galaxy est une ressource précieuse. Elle propose des rôles, des collections, des modules et des plugins mis à disposition par de nombreux contributeurs de la communauté.

La commande « ansible-galaxy » permet d'effectuer diverses opérations comme l'installation de rôles depuis Galaxy ou tout autre SCM git, la création ou la suppression de rôles, et la gestion de certaines tâches sur le site Galaxy. Cette commande est intégrée à Ansible et est donc disponible dès l'installation de ce dernier.

Le projet Galaxy étant open source, il est possible d'héberger votre propre serveur Galaxy interne. Pour l'utiliser, il faudra adapter la configuration par défaut dans le fichier Ansible.cfg en y précisant l'adresse de votre serveur interne, car par défaut, il utilise l'adresse du serveur galaxy.ansible.com.

Présentation d'Ansible

Ansible est un outil qui automatise et fait évoluer des infrastructures de toute taille. Il est utilisé pour la gestion des configurations, l'orchestration des déploiements et d'autres fonctions. Sa simplicité de mise en œuvre permet même à un administrateur système débutant d'automatiser son infrastructure en quelques heures.

Ansible fonctionne en utilisant le protocole SSH pour communiquer avec ses hôtes cibles (principalement des machines Linux). Pour les administrateurs Windows, l'automatisation est possible en utilisant WinRM à la place de SSH, mais la machine de contrôle doit toujours exécuter Linux.

Ansible peut automatiser les tâches courantes d'administration système comme l'application de correctifs, les mises à jour, la gestion des groupes et des utilisateurs, le provisionnement, etc.

Ansible se distingue par sa popularité, sa simplicité et son approche sans agent. Un débutant peut rapidement automatiser une infrastructure, et l'outil permet une mise à l'échelle rapide, une efficacité et une grande interopérabilité.

Utilisation d'Ansible Galaxy

Pour interagir avec Ansible Galaxy, ouvrez votre terminal et exécutez quelques commandes. Assurez-vous d'abord d'avoir installé la dernière version d'Ansible sur votre système.

Après l'installation d'Ansible, la commande `ansible-galaxy` dans le terminal affichera toutes les options disponibles.

[email protected]:~$ ansible-galaxy

Vous pouvez commencer par créer un rôle en utilisant la commande `init`. Par exemple, pour créer un rôle nommé 'testing', utilisez la commande : `ansible-galaxy init testing`. La commande `ls` permet de vérifier la création du rôle et des fichiers nécessaires dans son répertoire.

[email protected]:~$ ansible-galaxy init testing

La communauté Ansible Galaxy est très active, avec de nombreux rôles préexistants que vous pouvez utiliser directement.

En naviguant sur 'galaxy.ansible.com', vous accéderez à la page d'accueil du site. Vous pouvez explorer les catégories populaires ou utiliser le bouton "Rechercher" pour affiner votre recherche grâce à des filtres.

Par exemple, si vous recherchez un rôle pour un serveur MySQL, faites votre recherche et utilisez les filtres. Vous constaterez peut-être que le rôle de geerlingguy est parmi les plus téléchargés. Vous pouvez alors choisir de l'installer en cliquant sur geerlingguy MySQL.

Vous obtiendrez alors la commande pour installer le rôle via `ansible-galaxy`.

Exécutez cette commande pour télécharger et installer le rôle de serveur MySQL sur votre machine.

[email protected]:~$ ansible-galaxy install geerlingguy.mysql

Si vous connaissez déjà le rôle et son auteur, vous pouvez effectuer une recherche ciblée, comme ci-dessous.

[email protected]:~$ ansible-galaxy search elasticsearch --author geerlingguy

Commandes Ansible Galaxy usuelles

La commande `ansible-galaxy` facilite la gestion des rôles et des collections sur galaxy.ansible.com. Voici quelques commandes fréquemment utilisées par les administrateurs système:

  • `ansible-galaxy list`: affiche la liste de tous les rôles installés avec leurs numéros de version.
  • `ansible-galaxy remove`: supprime un rôle installé sur le système.
  • `ansible-galaxy info`: fournit des informations détaillées sur Ansible Galaxy.
  • `ansible-galaxy init`: crée un modèle de rôle adapté à la soumission sur Ansible Galaxy.
  • `ansible-galaxy import`: nécessite une connexion pour importer un rôle depuis le site web officiel de Galaxy.

Ces commandes (init, import, install, remove) peuvent aussi être utilisées avec la commande `ansible-galaxy collection` pour gérer les collections via Ansible Galaxy.

Explorons à présent les rôles et collections dans Ansible Galaxy.

Créer des rôles avec Ansible Galaxy

Ansible Galaxy est avant tout un référentiel public pour les rôles Ansible. Chaque rôle est accompagné d'un fichier README expliquant son utilisation et ses variables. Le contenu de Galaxy est en constante évolution.

Galaxy permet d'ajouter des sources de rôles comme GitHub grâce à git. La commande `ansible-galaxy init` sert à initialiser un nouveau rôle, tandis que la commande `ansible-galaxy install ` permet de l'installer.

Avant de pouvoir utiliser un rôle dans un playbook, il doit être téléchargé. Les rôles se trouvent généralement dans le répertoire `/etc/ansible/roles`.

Structure d'un rôle Ansible et sa signification

Voici les fichiers et répertoires créés lors de l'installation d'un rôle :

  • `README.md`: Fichier "Lisez-moi" décrivant le rôle, ses paramètres d'entrée, et fournissant un exemple en YAML.
  • `tasks`: Contient les tâches exécutées par le rôle. `main.yml` est le point d'entrée du rôle, et il peut inclure d'autres fichiers.
  • `handlers`: Comprend les gestionnaires pouvant être utilisés dans ce rôle ou un autre.
  • `defaults`: Variables par défaut pour le rôle.
  • `vars`: Variables ayant plus d'importance que celles par défaut.
  • `files`: Contient les fichiers pouvant être déployés par le rôle.
  • `templates`: Contient les modèles utilisables par le rôle.
  • `meta`: Métadonnées définissant le rôle, y compris ses dépendances.
  • `tests`: Tests CI à exécuter.
  • `library`: Permet d'intégrer des modules ou des plugins. Ce dossier n'est pas créé par `init`. Vous pouvez y ajouter des modules Python personnalisés pour vos tâches.

Créer des collections avec Ansible Galaxy

Ansible Galaxy est l'outil privilégié pour la gestion des rôles depuis des années. Toutefois, la fonctionnalité de collection a été introduite avec Ansible 2.2.8.

Les collections sont utilisées pour la distribution de contenu Ansible. Elles permettent de regrouper des playbooks, des rôles, des modules et des plugins.

La structure de base d'une collection est la suivante :

collection/
├── docs/
├── galaxy.yml
├── plugins/
│ ├──
modules/
│ │ └── module1.py
│ ├──
inventory/
│ └── .../
├── README.md
├── roles/
│ ├──
role1/
│ ├──
role2/
│ └── .../
├── playbooks/
│ ├──
files/
│ ├──
vars/
│ ├──
templates/
│ └── tasks/
└── tests/

Création d'un squelette de collection

Pour installer une collection sur votre machine, utilisez la commande `ansible-galaxy collection install`.

Plusieurs sous-commandes peuvent être utilisées avec `ansible-galaxy collection` :

  • `init`: crée une structure de collection de base à partir du modèle par défaut d'Ansible ou d'un modèle personnalisé.
  • `build`: crée un artefact de collection pouvant être téléchargé sur Galaxy ou un référentiel interne.
  • `publish`: publie un artefact de collection.
  • `install`: installe une ou plusieurs collections.

Conclusion

Ansible Galaxy est un excellent moyen de structurer vos playbooks. Avec environ 39 000 auteurs, 30 000 rôles et 1 656 collections, vous pouvez rapidement démarrer vos projets d'automatisation. Pour contribuer au projet open source d'Ansible Galaxy, consultez le guide du développeur et le guide du contributeur.

Vous pourriez également être intéressé par les tâches Sysadmin que vous pouvez automatiser avec Ansible.

Auteur
France

Rédacteur tech, guides pratiques et astuces numériques.