Les bases de Jinja2
Jinja2 est le moteur de templates utilise par Ansible. Il permet de generer des fichiers de configuration dynamiques.
# Trois types de delimiteurs :
{{ variable }} # Afficher une variable
{% instruction %} # Logique (if, for, etc.)
{# commentaire #} # Commentaire (non inclus dans la sortie)
Variables dans les templates
# templates/nginx.conf.j2
server {
listen {{ http_port }};
server_name {{ server_name }};
root {{ document_root }};
# Informations du serveur
# Hostname: {{ ansible_hostname }}
# IP: {{ ansible_default_ipv4.address }}
# OS: {{ ansible_distribution }} {{ ansible_distribution_version }}
}
Filtres Jinja2
# Filtres courants
{{ variable | default("valeur_par_defaut") }}
{{ variable | upper }}
{{ variable | lower }}
{{ variable | capitalize }}
{{ liste | join(", ") }}
{{ variable | int }}
{{ variable | replace("ancien", "nouveau") }}
{{ chemin | basename }}
{{ chemin | dirname }}
{{ dictionnaire | to_nice_yaml }}
{{ dictionnaire | to_nice_json }}
# Exemple dans un template
server_name {{ server_name | default("localhost") }};
worker_processes {{ ansible_processor_cores | default(2) }};
Utiliser le module template
# Structure du projet
project/
playbook.yml
templates/
nginx.conf.j2
app.conf.j2
# Dans le playbook
- name: Deployer la config Nginx
template:
src: templates/nginx.conf.j2
dest: /etc/nginx/sites-available/{{ app_name }}
owner: root
group: root
mode: "0644"
notify: Recharger Nginx
Convention : Les templates Jinja2 utilisent l'extension
.j2 pour les distinguer des fichiers statiques.