Ansible - les roles, les tags, les profils
Lorsque l’on commence à structurer ses playbooks Ansible, il est important de bien distinguer les rôles, les tags et les profils car les objectifs sont différents et souvent confondus.
TL;DR
| Élément | Rôle | Exemple |
|---|---|---|
| role | Charge le contenu du dossier roles/<nom>/ |
roles:- role: time |
| tag | Filtre les tâches ou les plays à exécuter | ansible-navigator run ... --tags setup_time_rhel9 |
| profile | Variable permettant d’adapter le comportement | ansible-navigator run ... --extra-vars "profile=prod" |
| vars_files | Charge un fichier YAML de variables | vars_files:- roles/time/rhel9/defaults/main.yml |
Résumé :
- Le rôle indique quoi exécuter
- Le tag permet de sélectionner ce que l’on veut lancer
- Le profil adapte le comportement du playbook
- Les vars_files permettent de charger des variables spécifiques
Exemple de sous repertoire :
roles/<nom>/ |
Les rôles
Un rôle détermine ce qui doit être exécuté. Il représente un ensemble de tâches, templates, handlers et variables dédiés à une fonction précise.
Exemple :
roles: |
Ansible va alors chercher automatiquement le rôle dans :
roles/time/ |
Puis utiliser :
roles/time/tasks/main.yml |
Les rôles ont tous une arboressence de type :
# tree roles/time/ |
Les tags
Les tags ont pour seul objectif de filtrer l’exécution des playbooks. Ils ne correspondent à aucun dossier et ne chargent aucun fichier.
Exemple :
tags: |
Dans cet exemple, seules les tâches ou les plays portant le tag setup_time_rhel9 seront exécutés car ils déterminent ce qui doit être exécuté parmi ce qui est disponible :
# ansible-navigator run play-install-ccs-rhel9.yml --tags setup_time_rhel9 |
Les profils
Le profil est simplement une variable utilisée pour adapter le comportement du playbook. Il permet d’activer ou de désactiver certaines parties du playbook selon le contexte d’exécution.
Le profil détermine donc dans quel contexte le playbook doit fonctionner.
Exemple :
when: profile == "production" |
La valeur est généralement fournie au lancement :
# ansible-navigator run play-install-ccs-rhel9.yml --extra-vars "profile=production" |
Les vars_files
Les fichiers de variables peuvent être chargés explicitement.
Dans ce cas, Ansible lit directement ce fichier et met les variables à disposition du playbook. Cela permet de charger des paramètres spécifiques à un système, un environnement ou un profil.
vars_files: |
Note:
Les profils ne sont pas déclarés dans Ansible lui-même. Ce sont simplement des variables dont la valeur est fournie lors de l’exécution du playbook, par exemple via
--extra-vars, l’inventaire ou les paramètres d’un Job Template dans AAP.
Documentation
Ansible