Aller au contenu

Lab 11 : Chargement de Variables Spécifiques au Système

Dans ce TP, vous allez apprendre à :

  • Utiliser le module include_vars avec with_first_found pour charger des variables spécifiques au système d’exploitation.
  • Structurer vos playbooks afin de rendre vos déploiements plus dynamiques et adaptables à différents environnements.
  • Utiliser des fichiers de variables pour personnaliser les actions des tâches Ansible en fonction de l’OS de l’hôte.

Avant de commencer ce TP, assurez-vous d’avoir :

  • Complété les TPs précédents sur Ansible.
  • Configuré AWS CLI et Ansible sur votre machine.
  • Des connaissances de base sur la gestion des variables dans Ansible.

Dans ce TP, vous allez apprendre à :

  • Créer des fichiers de variables spécifiques à différents systèmes d’exploitation.
  • Utiliser le module include_vars pour charger ces variables en fonction du système d’exploitation de l’hôte.

Le module include_vars d’Ansible permet de charger des fichiers de variables dans un playbook. Combiné à with_first_found, il vous permet de rechercher et de charger dynamiquement les variables spécifiques à un environnement, comme le système d’exploitation de l’hôte.

  1. Créez un répertoire vars/ à la racine de votre projet Ansible et ajoutez-y deux fichiers de variables : Ubuntu.yml et CentOS.yml.
---
package_name: apache2
service_name: apache2
---
package_name: httpd
service_name: httpd
  1. Modifiez le fichier tp-11.yaml pour inclure le chargement dynamique des variables :
---
- name: Exemple d'utilisation de include_vars avec with_first_found
hosts: all
tasks:
- name: Load a variable file based on the OS type, or a default if not found. Using free-form to specify the file.
ansible.builtin.include_vars: "{{ lookup('ansible.builtin.first_found', params) }}"
vars:
params:
files:
- '{{ansible_distribution}}.yaml'
- '{{ansible_os_family}}.yaml'
- default.yaml
paths:
- 'vars'
- name: Installer le paquet web approprié
ansible.builtin.package:
name: "{{ package_name }}"
state: present
- name: Démarrer le service web approprié
ansible.builtin.service:
name: "{{ service_name }}"
  1. Exécutez le playbook sur des hôtes Ubuntu et CentOS :
Terminal window
ansible-playbook tp-11.yaml -i inventory
  1. Observez que les fichiers de variables sont chargés en fonction du système d’exploitation, et que les tâches utilisent les variables appropriées pour chaque hôte.

Pour valider ce TP, assurez-vous que :

  1. Les fichiers de variables spécifiques au système d’exploitation sont bien chargés.
  2. Les bonnes tâches sont exécutées avec les bonnes variables (paquet et service).
  3. Vous avez testé le playbook sur plusieurs distributions pour vérifier son comportement.

Pour aller plus loin, essayez les défis suivants :

  • Ajoutez des variables supplémentaires dans les fichiers de variables pour gérer d’autres aspects de la configuration, comme les ports ou les répertoires.
  • Testez ce pattern avec d’autres distributions (par exemple, Debian, Fedora) en créant des fichiers de variables adaptés.
  • Modifiez le playbook pour charger les variables en fonction de la version exacte du système d’exploitation (ex. Ubuntu 18.04, CentOS 7, etc.).