Partie 1 : Présentation et prérequis
Partie 2 : Bases et premiers Playbook
Partie 3 : Les Variables
Partie 4 : Les Collections
ââ
Et voici la quatriĂšme partie sur les collections, une nouvelles façon de gĂ©rer les modules, les rĂŽles et les plugin qui s’inscrit dans un changement important sur les releases d’Ansible. On regarde ça de plus prĂȘt.
Le code des exemples qui suivent sont toujours sur GitHub
Les Collections
Introduction
J’en avais rapidement parlĂ© dans un prĂ©cĂ©dent article, on va y revenir un peu plus en dĂ©tail.
Les Collections permettent de regrouper du contenu Ansible (Playbook, rĂŽles, modules, Plug-InâŠ) dans des projets dĂ©diĂ©s. Ă partir de la version 2.10, le projet Ansible (appelĂ© ansible-base pour la version 2.10, et ansible-core pour la version 2.11 et les futures versions) se voit retrier une majoritĂ© de ses modules tiers qui sont donc rĂ©partis dans les Collections.
Pourquoi ce choix ? Câest assez simple, le projet Ansible devenait trop imposant. Le nombre dâissues et de PR sur le projet Github nâĂ©tait plus raisonable, dâautant plus quâils concernaient majoritairement des modules dont la plupart Ă©taient gĂ©rĂ©s par des tiers mainteneurs. Les raison dĂ©taillĂ©es ici : https://www.ansible.com/blog/announcing-the-community-ansible-3.0.0-package
Cette nouvelle façon de faire peut apporter les avantages suivants :
- Projet Ansible allégé
- Cycle de vie indépendant
- Gestion des collections déléguée (du moins pour certains)
Ces changements concernent principalement les dĂ©veloppeurs, car cĂŽtĂ© utilisateur, il existe maintenant le Ansible community package ou Ansible Project qui suit une autre logique de versionning et qui intĂšgrent toutes les collections maintenues. La version actuelle de Ansible Project est 4.7.0, elle intĂšgre ansible-core 2.11 plus une version âfreezeâ des collections.
La version 5.0 est prévue pour fin novembre 2021.
Changements
Il existe trois types de collections :
- Celles intégrées dans le projet de base (ansible.builtin)
- Les collections maintenues par la communauté (community.)
- Celles gérées par les éditeurs (cisco, vmware etc.)
Liste exhaustive ici : https://github.com/ansible-collections
FQCN
Pour Fully Qualified Collection Name, reprĂ©sente le nom complet d’un Module, Role, Plug-in ou Playbook dans une Collection. Par exemple pour Grafana, le module qui permet de gĂ©rer les Datasource se nomme : community.grafana.grafana_datasource
Il est composé du namespace : community, de la collection : grafana et du content_name : grafana_datasource.
La liste des namespace est gérée par RedHat. Certains éditeurs ont leur namespace réservé comme Cisco ou VMware.
Note : Tous les modules qui n’ont pas encore Ă©tĂ© rĂ©partis dans des Collection et qui ne font pas partie de ansible-base se trouve dans les Collections :
- community.general
- community.network
Les Collections sont principalement hĂ©bergĂ©es sur GitHub, mais peuvent aussi l’ĂȘtre sur d’autres gestionnaire de code source. Ansible Galaxy a Ă©tĂ© revu pour prendre en compte les Collections et ainsi nous proposer un outil permettant de les gĂ©rer.
Mise Ă jour depuis 2.9 : Nouveau VirtualEnv
Si vous aviez installé via pip, vous ne pourrez pas le mettre à jour directement, il faudra le déinstaller puis le réinstaller.
Si Ansible est dans un VirtualEnv (vu dans l’article sur les prĂ©requis), vous pouvez vous en crĂ©er un nouveau afin de conserver les deux versions d’Ansible (pratique pour des tests).
CrĂ©ation d’un nouveau VirtualEnv :
|
|
Activation du venv :
|
|
Installation Ansible 4.7.0 et jmespath (pour les filtres JSON) :
|
|
En affichant la version, on affiche la version de ansible-core associée :
|
|
PremiĂšre Collection
On peut vérifier que la Collection community.grafana est déjà présente :
|
|
Dans un Play, on va indiquer que l’on souhaite charger cette Collection en ajoutant ceci Ă l’en-tĂȘte :
|
|
Installation Grafana
Avant dâinstaller Grafana, on ajuste le premier play pour les prĂ©requis :
|
|
Puis on ajoute un Play Ă notre Playbook pour lâinstallation de Grafana :
|
|
Ajout dâune Datasource
La premiĂšre Ă©tape de configuration de Grafana consiste Ă ajouter une Datasource. Câest depuis cette source de donnĂ©es que lâon va pouvoir crĂ©er des dashboards. Une Datasource peut ĂȘtre une base de donnĂ©es relationnelle (MySQL, Postgres âŠ) ou encore une TSDB comme InfluxDB, ce qui est notre cas. On pourrait Ă©galement penser Ă Prometheus pour ce cas.
Pour ajouter notre Datasource on va (enfin!) sâappuyer sur la collection Grafana. On ajoute ces tasks Ă la suite de lâinstallation :
|
|
Pour le nom de la database on rĂ©utilise la variable que lâon avait dĂ©fini dans le prĂ©cĂ©dent article.
Dans Grafana on peut maintenant voir la Datasource InfluxDB qui a été ajoutée :
On va sâarrĂȘter lĂ pour cet article, Ă bientĂŽt pour la prochaine Ă©tape qui sera consacrĂ©e Ă la suite de la configuration avec la crĂ©ation de Dashboard et la collection des donnĂ©es avec Telegraf !