Lab 11 : Chargement de Variables Spécifiques au Système
Objectifs
Section intitulée « Objectifs »Dans ce TP, vous allez apprendre à :
- Utiliser le module
include_varsavecwith_first_foundpour 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.
Prérequis
Section intitulée « Prérequis »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.
Architecture du TP
Section intitulée « Architecture du TP »Dans ce TP, vous allez apprendre à :
- Créer des fichiers de variables spécifiques à différents systèmes d’exploitation.
- Utiliser le module
include_varspour charger ces variables en fonction du système d’exploitation de l’hôte.
Introduction à include_vars et with_first_found
Section intitulée « Introduction à include_vars et with_first_found »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.
Mise en Place des Fichiers de Variables
Section intitulée « Mise en Place des Fichiers de Variables »- Créez un répertoire
vars/à la racine de votre projet Ansible et ajoutez-y deux fichiers de variables :Ubuntu.ymletCentOS.yml.
---package_name: apache2service_name: apache2---package_name: httpdservice_name: httpd- Modifiez le fichier
tp-11.yamlpour 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 }}"- Exécutez le playbook sur des hôtes Ubuntu et CentOS :
ansible-playbook tp-11.yaml -i inventory- 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.
Validation du TP
Section intitulée « Validation du TP »Pour valider ce TP, assurez-vous que :
- Les fichiers de variables spécifiques au système d’exploitation sont bien chargés.
- Les bonnes tâches sont exécutées avec les bonnes variables (paquet et service).
- Vous avez testé le playbook sur plusieurs distributions pour vérifier son comportement.
Challenge
Section intitulée « Challenge »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.).