
Cette sous-section est la plus dense pour la RHCE EX294 — et celle où les pièges sont les plus subtils. Elle couvre tout ce qui touche aux variables (déclaration, portées, types complexes), aux facts (gather, subset, magic vars), à la précédence officielle (22 niveaux), à la capture de sorties (register:, set_fact:), aux lookups et aux filtres Jinja2 essentiels. Maîtriser cette couche, c’est passer du playbook qui marche au playbook qui marche sur toutes les versions, tous les inventaires, et résiste aux refactos.
La page précédence des variables est explicitement dans les objectifs RHCE — elle vous évite des heures de debug quand une variable que vous croyez maîtriser est écrasée par une variable plus prioritaire.
Ce que vous allez apprendre
Section intitulée « Ce que vous allez apprendre »- Déclarer des variables :
vars:,vars_files:,--extra-vars,group_vars/,host_vars/; - Manipuler les types collections : listes, dicts, nested, accès
var.keyvsvar['key']; - Comprendre les facts (
ansible_facts.*),gather_subset:pour la performance ; - Connaître les magic vars :
inventory_hostname,groups,hostvars,play_hosts,ansible_play_batch; - Maîtriser les 22 niveaux de précédence — objectif explicite RHCE EX294 ;
- Capturer des sorties :
register:,set_fact:(aveccacheable: true) ; - Utiliser les lookups :
file,env,password,vars,hashi_vault,csvfile,ini,dig; - Appliquer les filtres Jinja2 essentiels :
default,to_json,regex_replace,dict2items,combine,selectattr,map('attribute=...').
Prérequis
Section intitulée « Prérequis »- Avoir lu la sous-section Fondations (YAML, structure, style guide) ;
- Avoir fini la sous-section Playbooks (anatomie d’un play, handlers, tags).
Le parcours en 8 pages
Section intitulée « Le parcours en 8 pages »La place dans la RHCE EX294
Section intitulée « La place dans la RHCE EX294 »Cette sous-section couvre directement plusieurs objectifs explicites de la RHCE :
| Objectif RHCE | Couvert par |
|---|---|
| Utiliser variables (host, group, register, facts) | Variables — déclaration et portées |
| Manipuler types simples et collections | Types collections |
| Comprendre la précédence des variables | Précédence des variables (RHCE explicite) |
| Manipuler les facts | Facts et magic vars |
Étendre les facts côté cible (facts.d) | Custom facts (bonus EX294) |
| Capturer une sortie pour l’utiliser ailleurs | register et set_fact |
| Récupérer des données externes | Lookups |
| Transformer des données dans un template | Filtres Jinja2 essentiels |
Pièges classiques à anticiper
Section intitulée « Pièges classiques à anticiper »Quatre pièges qui plombent les playbooks débutants intermédiaires :
- Sous-estimer
--extra-vars: c’est le niveau 22, le plus prioritaire. Aucungroup_vars/all.ymlne peut l’écraser. Pratique pour CI, dangereux si oublié. - Mélanger
vars/etdefaults/dans un rôle :vars/main.ymlest niveau 18 (haut),defaults/main.ymlest niveau 2 (bas). Inverser les deux change toute la précédence. - Croire que
set_factest éphémère : par défaut, oui. Aveccacheable: true, le fact est persistant dans le cache (fact_caching = jsonfile). Surprise garantie au prochain run. - Boucles sur dicts via
with_dict: déprécié. Utiliserloop:avecdict2items:qui retourne[{key, value}, ...].