5 conseils pour choisir une collection Ansible qui vous convient
Essayez ces stratégies pour rechercher et vérifier des collections de plugins et de modules Ansible avant de les installer.
En août 2020, Ansible a publié sa première version depuis que les développeurs ont séparé les fonctionnalités de base de la grande majorité de ses modules et plugins. Quelques modules Ansible de base font toujours partie du noyau d'Ansible : des modules pour la création de modèles de fichiers de configuration, la gestion des services et l'installation de packages. Tous les autres modules et plugins ont trouvé leur place dans des collections Ansible dédiées.
Cet article propose un aperçu rapide des collections Ansible en général et, en particulier, de la façon de reconnaître celles de haute qualité.
Que sont les collections Ansible ?
À la base, une collection Ansible est une collection (jeu de mots) de modules et de plugins associés que vous pouvez gérer indépendamment du moteur principal d'Ansible. Par exemple, la collection Sensu Go Ansible contient du contenu Ansible pour gérer tous les aspects de Sensu Go. Il comprend des rôles Ansible pour l'installation de composants et de modules Sensu Go pour la création, la mise à jour et la suppression de ressources de surveillance. Un autre exemple est la collection Sops Ansible qui intègre l'éditeur Secret Operations de Mozilla avec Ansible.
Avec l'introduction des collections Ansible, Ansible Galaxy est devenu la plaque tournante centrale de tout le contenu Ansible. Les auteurs y publient leurs collections Ansible et les utilisateurs d'Ansible utilisent la fonction de recherche d'Ansible Galaxy pour trouver le contenu Ansible dont ils ont besoin.
Ansible est fourni avec l'outil ansible-galaxy
pour installer des collections. Une fois que vous savez quelle collection Ansible vous souhaitez installer, les choses sont relativement simples : exécutez la commande d'installation répertoriée sur la page Ansible Galaxy. Ansible se charge de le télécharger et de l'installer. Par exemple:
$ ansible-galaxy collection install sensu.sensu_go
Process install dependency map
Starting collection install process
Installing 'sensu.sensu_go:1.7.1' to
'/home/user/.ansible/collections/ansible_collections/sensu/sensu_go'
Mais trouver la collection Ansible dont vous avez besoin et vérifier son contenu sont les parties les plus difficiles.
Comment sélectionner une collection Ansible
À l’époque d’Ansible monolithique, l’utilisation de modules et de plugins Ansible tiers n’était pas pour les âmes sensibles. En conséquence, la plupart des utilisateurs utilisaient tout ce qui était fourni avec leur version d'Ansible.
La possibilité d'installer des collections Ansible offrait beaucoup plus de contrôle sur le contenu que vous utilisez dans vos playbooks Ansible. Vous pouvez installer le moteur Ansible principal, puis l'équiper des modules, plugins et rôles dont vous avez besoin. Mais comme toujours, un grand pouvoir s’accompagne de grandes responsabilités.
Désormais, les utilisateurs sont seuls responsables de la qualité du contenu qu'ils utilisent pour créer des playbooks Ansible. Mais comment séparer le contenu de haute qualité du reste ? Voici cinq éléments à vérifier lors de l’évaluation d’une collection Ansible.
1.Documents
Une fois que vous avez trouvé un candidat potentiel sur Ansible Galaxy, vérifiez d'abord sa documentation. Dans un monde idéal, chaque collection Ansible disposerait d'un site de documentation dédié. Par exemple, les collections Sensu Go et F5 Networks Ansible en disposent. La plupart des autres collections Ansible sont uniquement accompagnées d'un fichier README, mais cela changera pour le mieux une fois que les outils de documentation seront matures.
La documentation de la collection Ansible doit contenir au moins un didacticiel de démarrage rapide avec des instructions d'installation. Cette partie de la documentation vise à permettre aux utilisateurs d'être opérationnels en quelques minutes. Par exemple, la collection Sensu Go Ansible dispose d'un guide de démarrage rapide dédié, tandis que la collection Sops Ansible inclut ces informations dans son fichier README.
Une autre partie essentielle de la documentation est un guide de référence détaillé des modules, des plugins et des rôles. Les auteurs de collections ne publient pas toujours ces guides sur Internet, mais ils doivent toujours être accessibles avec l'outil ansible-doc
.
$ ansible-doc community.sops.sops_encrypt
> SOPS_ENCRYPT (/home/tadej/.ansible/collections/ansible>
Allows to encrypt binary data (Base64 encoded), text
data, JSON or YAML data with sops.
* This module is maintained by The Ansible Community
OPTIONS (= is mandatory):
- attributes
The attributes the resulting file or directory should
have.
To get supported flags look at the man page for
`chattr' on the target system.
This string should contain the attributes in the same
order as the one displayed by `lsattr'.
The `=' operator is assumed as default, otherwise `+'
or `-' operators need to be included in the string.
(Aliases: attr)[Default: (null)]
type: str
version_added: 2.3
...
2. Lisibilité du playbook
Un playbook Ansible doit servir de description lisible par l'homme de l'état souhaité. Pour y parvenir, les modules de la collection Ansible en cours d'évaluation doivent avoir une interface utilisateur cohérente et des noms de paramètres descriptifs.
Par exemple, si les modules Ansible interagissent avec un service Web, les paramètres d'authentification doivent être séparés du reste. Et tous les modules doivent utiliser les mêmes paramètres d'authentification si possible.
- name: Create a check that runs every 30 seconds
sensu.sensu_go.check:
auth: &auth
url: https://my.sensu.host:8080
user: demo
password: demo-pass
name: check
command: check-cpu.sh -w 75 -c 90
interval: 30
publish: true
- name: Create a filter
sensu.sensu_go.filter:
# Reuse the authentication data from before
auth: *auth
name: filter
action: deny
expressions:
- event.check.interval == 10
- event.check.occurrences == 1
3. Fonctionnalité de base
Avant de commencer à utiliser du contenu Ansible tiers en production, vérifiez toujours les fonctionnalités de base de chaque module Ansible.
La propriété la plus critique à rechercher est probablement le résultat. Les modules et rôles Ansible qui appliquent un état sont beaucoup plus faciles à utiliser que leurs homologues qui exécutent des actions. En effet, vous pouvez mettre à jour votre playbook Ansible et le réexécuter sans risquer une panne importante.
- name: Command module executes an action -> fails on re-run
ansible.builtin.command: useradd demo
- name: User module enforces a state -> safe to re-run
ansible.builtin.user:
name: demo
Vous devez également vous attendre à la prise en charge du mode vérification, qui simule le changement sans le réaliser. Si vous combinez le mode contrôle avec l’application de la loi par l’État, vous obtenez gratuitement un détecteur de dérive de configuration.
$ ansible-playbook --check playbook.yaml
PLAY [host] ************************************************
TASK [Create user] *****************************************
ok: [host]
...
PLAY RECAP *************************************************
host : ok=5 changed=2 unreachable=0 failed=0
skipped=3 rescued=0 ignored=0
4. Robustesse de la mise en œuvre
Une vérification de robustesse est un peu plus difficile à réaliser si vous n'avez jamais développé de module ou de rôle Ansible auparavant. La vérification des fichiers de configuration d'intégration continue/livraison continue (CI/CD) devrait vous donner une idée générale de ce qui est testé. Trouver les commandes ansible-test
et molecule
dans la suite de tests est un excellent signe.
5. Entretien
Lors de votre évaluation, vous devriez également jeter un œil au suivi des problèmes et à l’activité de développement. Trouver d'anciens problèmes sans réponse de la part des responsables est l'un des signes d'une collection Ansible mal entretenue.
Juger de la santé d’une collection par l’activité de développement est un peu plus délicat. Aucun commit au cours de la dernière année n'est le signe certain d'une collection Ansible non entretenue, car l'écosystème Ansible se développe rapidement. Voir quelques commits par mois est généralement le signe d'un projet mature qui reçoit des mises à jour en temps opportun.
Temps bien dépensé
L'évaluation des collections Ansible n'est pas une tâche entièrement triviale. Espérons que ces conseils rendront votre processus de sélection un peu plus gérable. Il faut du temps et des efforts pour trouver le contenu approprié à votre cas d'utilisation. Mais comme l’automatisation fait désormais partie intégrante de presque tout, tous ces efforts sont bien dépensés et porteront leurs fruits à l’avenir.
Si vous envisagez de créer votre propre collection Ansible, vous pouvez télécharger un livre électronique gratuit de Steampunk contenant de nombreux conseils sur la création et la maintenance d'intégrations Ansible de haute qualité.