La gestion des variables Ansible peut s’avérer complexe en raison des multiples niveaux de définition.
Cela peut entraîner des erreurs de configuration et des déploiements ratés si l’ordre de priorité n’est pas correctement compris.
Cet article décrypte comment définir et prioriser les variables dans Ansible pour garantir des configurations précises.
Devenez un expert d'Ansible et simplifiez vos tâches d'administration.
Définir les Variables Ansible
Pour récupérer et définir des variables dans Ansible, plusieurs méthodes peuvent être utilisées à divers niveaux de spécificité :
CLI Vars (Variables de ligne de commande) :
Nous pouvons spécifier des variables directement depuis la ligne de commande lors de l’exécution d’Ansible. Cette methode est utile pour fournir des valeurs spécifiques qui peuvent varier selon le contexte d’exécution.
Inventorie (Inventaires) :
Les variables peuvent être définies dans les fichiers d’inventaire (hosts.yml, par exemple), soit pour tous les hôtes, soit pour des groupes spécifiques d’hôtes. Cela permet de définir des configurations spécifiques à des ensembles d’hôtes ou à l’ensemble de l’inventaire.
Group Vars (Variables de groupe) :
Définition : Les variables peuvent être définies dans des fichiers spécifiques aux groupes d’hôtes (group_vars/ dans la structure de répertoire Ansible).
Utilisation : Idéal pour configurer des paramètres communs à plusieurs hôtes au sein d’un même groupe.
Host Vars (Variables d’hôte) : Les variables peuvent être définies pour des hôtes individuels dans des fichiers spécifiques (host_vars/ dans la structure de répertoire Ansible). Cette methode Permet de personnaliser la configuration pour des hôtes spécifiques, en surchargeant les valeurs définies au niveau du groupe.
Priorité des Variables dans Ansible
L’ordre de priorité des variables dans Ansible détermine quelle valeur prendra le dessus lorsque plusieurs définitions de variables se trouvent à différents niveaux. Voici comment cela fonctionne :
- Passées sur la ligne de commande :
Les variables spécifiées directement via –extra-vars ou -e en ligne de commande ont la priorité la plus élevée. Elles peuvent remplacer toutes les autres définitions de variables.
- Définies dans le Playbook :
Les variables définies dans la section vars : d’un playbook sont prioritaires par rapport aux variables définies automatiquement par Ansible et celles définies dans l’inventaire.
- Automatiquement définies par Ansible :
Ansible définit automatiquement certaines variables telles que celles liées aux faits (ansible_facts), qui contiennent des informations sur le système distant. Ces variables sont définies après les variables du playbook et avant celles de l’inventaire.
- Définies dans l’inventaire :Les variables définies dans l’inventaire (hosts.yml, par exemple) ont la priorité la plus basse parmi les variables qui sont explicitement définies. Elles peuvent être écrasées par les variables définies dans le playbook ou celles passées en ligne de commande.
Super, résumons ces idées dans un visuel pour illustrer cet concept :
Pour mieux assimiler cette section, nous allons définir des variables sur notre hôte géré à partir de notre hôte de contrôle. Pour ce faire, nous allons créer le fichier variables-playbook.yml en utilisant la commande nano variables-playbook.yml , et nous y définirons des variables comme suit :
---
- hosts: servers
tasks:
- name: affichage de la variable var
command: echo "{{ var }}"
vars:
var: "value_playbook"
Nous définissons d’abord la variable dans le playbook . Ensuite, pour la définir dans l’inventaire, nous ouvrons l’inventaire avec la commande nano /etc/ansible/ hosts et nous définissons la variable en tant que var=value_cli avec une valeur de notre choix.
Après avoir défini la variable dans l’inventaire, nous l’exécutons en spécifiant sa valeur comme ceci : ansible-playbook -v -e var=value_cli variables-playbook.yml
ansible-playbook : C’est la commande principale pour exécuter des playbooks Ansible.
-v : Cet argument optionnel signifie « verbose ». Lorsqu’il est utilisé, Ansible affiche des informations détaillées pendant l’exécution, y compris les tâches effectuées et les résultats.
-e var=value_cli : Cet argument permet de définir une variable (var) avec une valeur spécifique ( value_cli). La variable ainsi définie peut-être utilisée à l’intérieur du playbook Ansible (variables-playbook.yml) pour personnaliser son comportement en fonction de cette valeur.
variables-playbook.yml : C’est le nom du playbook YAML à exécuter.
Après l’exécution, voici le résultat qui affiche :
Parfait, l’exécution de la variable s’est déroulée avec succès et la valeur value_cli a été affichée comme prévu
Formez-vous gratuitement avec Alphorm !
Maîtrisez les compétences clés en IT grâce à nos formations gratuites et accélérez votre carrière dès aujourd'hui.
FAQ
Comment définir des variables dans un playbook Ansible ?
Quelle est la priorité des variables en Ansible ?
Comment utiliser les variables de ligne de commande dans Ansible ?
Comment les variables d'inventaire sont-elles définies dans Ansible ?
Pourquoi est-il important de comprendre l'ordre des variables ?
Conclusion
La gestion des variables Ansible est essentielle pour des déploiements réussis. Quelle méthode utilisez-vous pour assurer une configuration optimale de vos systèmes avec Ansible ?