Objectifs
- Définir des variables dans un play, group_vars et host_vars.
- Utiliser une expression Jinja et des extra vars.
- Enregistrer le résultat d’une tâche et lire des facts.
- Comprendre une vue simplifiée de la précédence.
Variables Ansible
Les variables séparent les valeurs qui changent de la logique des tâches. Elles peuvent venir de l’inventory, de fichiers group_vars ou host_vars, d’un play, de facts, d’un résultat register ou de la ligne de commande.
La précédence Ansible comporte de nombreux niveaux. Retenez d’abord que les defaults de rôle sont faibles et que les extra vars passées avec -e ont une priorité très élevée ; vérifiez toujours la documentation avant de concevoir une surcharge complexe.
Variables de play et expressions Jinja
La clé vars définit ici deux valeurs. Les doubles accolades insèrent une expression Jinja dans le message ou dans un argument de module.
---
- name: Présenter la configuration web
hosts: web
vars:
app_name: toolbox
http_port: 8080
tasks:
- name: Afficher la cible
ansible.builtin.debug:
msg: "{{ app_name }} écoute sur le port {{ http_port }}"ansible-playbook -i inventory.ini variables.yml -e "http_port=9090" --limit web01N’utilisez pas -e avec un secret en clair : la ligne de commande peut rester dans l’historique ou apparaître dans la liste des processus.
Portée et précédence, version simple
group_vars convient aux valeurs communes d’un groupe ; host_vars porte les exceptions d’un hôte. Les variables du play sont proches du scénario. Les extra vars servent à une surcharge explicite et dominent la plupart des autres sources.
- Defaults de rôle : valeurs de repli faciles à surcharger.
- Group vars : valeurs communes ; host vars : exceptions ciblées.
- Play vars : valeurs définies pour le play courant.
- Extra vars (-e) : priorité très élevée, à utiliser explicitement.
---
http_port: 8080
app_environment: staging---
http_port: 8081Résultats enregistrés et facts
register stocke le résultat structuré d’une tâche pour les tâches suivantes. Les facts décrivent la cible, par exemple sa famille de système ou ses interfaces. Inspectez une structure avec debug avant de dépendre d’un champ.
---
- name: Lire et afficher la version du noyau
hosts: web
tasks:
- name: Lire uname
ansible.builtin.command: uname -r
register: kernel_result
changed_when: false
- name: Afficher la sortie
ansible.builtin.debug:
var: kernel_result.stdout
- name: Afficher la famille du système
ansible.builtin.debug:
var: ansible_facts.os_familyErreur fréquente : cacher une surcharge involontaire
Mini résumé
- Les variables rendent les playbooks réutilisables.
- group_vars, host_vars et vars répondent à des portées différentes.
- -e a une priorité élevée et ne doit pas transporter de secret en clair.
- register et ansible_facts rendent les résultats et informations de cible accessibles.
Outils associés
Générer un playbook Ansible
Utilisez Ansible Playbook Generator pour préparer une base YAML locale, puis relisez et adaptez chaque tâche avant utilisation.
Ouvrir l’outilMini quiz
Trois questions pour vérifier les notions essentielles de la leçon.