Lisez ceci dans d’autres langues :
Anglais, Japonais, Portugais du Brésil, Français, Espagnol.
L’Exercice 1.5 introduit la templatisation Jinja2 au sein d’Ansible, une fonctionnalité puissante pour générer des fichiers dynamiques à partir de modèles. Vous apprendrez à créer des modèles qui intègrent des données spécifiques à l’hôte, permettant la création de fichiers de configuration sur mesure pour chaque hôte géré.
Ansible utilise Jinja2, un langage de templatisation largement utilisé pour Python, permettant la génération de contenu dynamique dans les fichiers. Cette capacité est particulièrement utile pour configurer des fichiers qui doivent différer d’un hôte à l’autre.
Les modèles se terminent par une extension .j2
et mélangent du contenu statique avec des espaces réservés dynamiques entourés de {{ }}
.
Dans l’exemple suivant, créons un modèle pour le Message du Jour (MOTD) qui inclut des informations dynamiques sur l’hôte.
Assurez-vous qu’un répertoire de modèles existe dans votre répertoire lab_inventory pour organiser vos modèles.
mkdir -p ~/lab_inventory/templates
Créez un fichier nommé motd.j2
dans le répertoire des modèles avec le contenu suivant :
Bienvenue sur {{ ansible_hostname }}.
OS : {{ ansible_distribution }} {{ ansible_distribution_version }}
Architecture : {{ ansible_architecture }}
Ce modèle affiche dynamiquement le nom d’hôte, la distribution de l’OS, la version et l’architecture de chaque hôte géré.
Utilisez le module ansible.builtin.template
dans un playbook pour distribuer et rendre le modèle sur vos hôtes gérés.
Modifiez le playbook system_setup.yml
avec le contenu suivant :
---
- name: Configuration Système de Base
hosts: all
become: true
tasks:
- name: Mise à jour de MOTD à partir du modèle Jinja2
ansible.builtin.template:
src: templates/motd.j2
dest: /etc/motd
handlers:
- name: Recharger le Pare-feu
ansible.builtin.service:
name: firewalld
state: reloaded
Le module ansible.builtin.template
prend le modèle motd.j2
et génère un fichier /etc/motd
sur chaque hôte, en remplissant les espaces réservés du modèle avec les faits réels de l’hôte.
Exécutez le playbook pour appliquer votre MOTD personnalisé sur tous les hôtes gérés :
[student@ansible-1 lab_inventory]$ ansible-navigator run system_setup.yml -m stdout
PLAY [Configuration Système de Base] *******************************************
.
.
.
TASK [Mise à jour de MOTD à partir du modèle Jinja2] ***************************
changed: [node1]
changed: [node2]
changed: [node3]
changed: [ansible-1]
RECAP *************************************************************************
ansible-1 : ok=6 changed=1 unreachable=0 failed=0 skipped=2 rescued=0 ignored=0
node1 : ok=8 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
node2 : ok=8 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
node3 : ok=8 changed=1 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Vérifiez les changements en vous connectant au nœud via SSH, et vous devriez voir le message du jour:
[rhel@control ~]$ ssh node1
Bienvenue sur node1.
OS : RedHat 8.7
Architecture : x86_64
Enregistrez ce système auprès de Red Hat Insights : insights-client --register
Créez un compte ou consultez tous vos systèmes sur https://red.ht/insights-dashboard
Dernière connexion : Lun 29 Jan 16:30:31 2024 depuis 10.5.1.29
Navigation
Exercise précédent - Exercise suivant
Cliquez ici pour revenir à l’atelier Ansible pour Red Hat Enterprise Linux