Aller au contenu
Infrastructure as Code medium

Templates Jinja2 Ansible : générer des fichiers de config dynamiques

3 min de lecture

Logo Ansible

Cette sous-section couvre la génération de fichiers de configuration via Jinja2 — la dernière brique pour passer du playbook qui modifie ligne par ligne (lineinfile) au playbook qui génère un fichier complet depuis un template paramétré. Vous apprenez la syntaxe Jinja2 (au-delà de {{ var }}), les filtres profonds (regex_search, groupby, from_yaml), les tests (is defined, is mapping), le module template avec ses options (validate, backup, lstrip_blocks), et les anti-patterns à éviter (notamment lineinfile quand template ferait mieux).

C’est le pattern le plus puissant d’Ansible : un seul template .j2 génère un nginx.conf parfait sur 50 webservers, en lisant un dict de variables différent par hôte.

  • La syntaxe Jinja2 complète : {{ }}, {% %}, {# #}, contextes, whitespace control
  • Les filtres avancés : regex_search, regex_findall, groupby, flatten, from_yaml, to_nice_yaml
  • Les tests Jinja : is defined, is none, is mapping, is sequence, is regex
  • Le module ansible.builtin.template : validate:, backup:, force:, lstrip_blocks:, trim_blocks:
  • Quand utiliser template: vs lineinfile:/blockinfile: — anti-patterns à éviter
Objectif RHCECouvert par
Templates Jinja2Jinja2 base + Filtres + Tests + Module template
Générer un nginx.conf, sshd_config, conf applicatifModule template avec validate:
Anti-patterns lineinfilelineinfile vs template
  • Whitespace control oublié : un template avec une boucle qui produit des lignes vides indésirables. Utiliser {%- ... -%} ou lstrip_blocks: true + trim_blocks: true.
  • validate: non posé sur template: : générer un nginx.conf cassé sans le savoir. Toujours poser validate: '/usr/sbin/nginx -t -c %s' ou équivalent sur les services critiques.
  • Confondre filtres et tests : default est un filtre ({{ var | default('x') }}), defined est un test ({% if var is defined %}).
  • Utiliser lineinfile: pour gérer 30 lignes : c’est le job de template:. Lineinfile sert pour 1-2 lignes ponctuelles.

Ce site vous est utile ?

Sachez que moins de 1% des lecteurs soutiennent ce site.

Je maintiens +700 guides gratuits, sans pub ni tracing. Aujourd'hui, ce site ne couvre même pas mes frais d'hébergement, d'électricité, de matériel, de logiciels, mais surtout de cafés.

Un soutien régulier, même symbolique, m'aide à garder ces ressources gratuites et à continuer de produire des guides de qualité. Merci pour votre appui.

Abonnez-vous et suivez mon actualité DevSecOps sur LinkedIn