Aller au contenu

Lab 09 : Utilisation des Conditions `when`

Dans ce TP, vous allez apprendre à :

  • Utiliser les conditions when pour contrôler l’exécution des tâches dans un playbook Ansible. * Gérer l’exécution de tâches en fonction de l’état de l’infrastructure. * Implémenter des tests conditionnels basés sur des variables Ansible et des faits système.

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 les variables et les modules Ansible.

Dans ce TP, vous allez apprendre à :

  • Créer un playbook qui utilise des conditions when pour exécuter des tâches uniquement si certaines conditions sont remplies.
  • Tester ces conditions sur différents systèmes.

Les conditions when dans Ansible permettent de contrôler l’exécution des tâches en fonction de certaines conditions. Celles-ci peuvent être basées sur des variables définies dans l’inventaire, des faits récupérés lors de l’exécution ou des résultats de tâches précédentes.

  1. Créez un fichier playbook nommé conditions.yaml :
---
- name: Exemple d'utilisation des conditions `when` dans Ansible
hosts: all
tasks:
- name: Installer Apache uniquement sur Ubuntu
become: true
ansible.builtin.apt:
name: apache2
state: present
when: ansible_facts['os_family'] == 'Debian'
- name: Installer httpd uniquement sur CentOS
become: true
ansible.builtin.yum:
name: httpd
state: present
when: ansible_facts['os_family'] == 'RedHat'
  1. Exécutez le playbook sur différents systèmes pour observer l’effet des conditions : shell ansible-playbook conditions.yaml
  2. Observez que les tâches sont exécutées en fonction du système d’exploitation.

Vous pouvez également utiliser des variables personnalisées dans les conditions when pour personnaliser l’exécution des tâches.

  1. Modifiez le fichier conditions.yaml pour ajouter l’utilisation de variables :
---
- name: Exemple d'utilisation des variables avec `when`
hosts: all vars:
package_to_install: nginx
service_to_start: nginx
tasks:
- name: Installer le paquet spécifié
become: true
ansible.builtin.apt:
name: "{{ package_to_install }}"
state: present
when: ansible_facts['os_family'] == 'Debian'
- name: Démarrer le service spécifié
become: true
ansible.builtin.service:
name: "{{ service_to_start }}"
state: started
when: ansible_facts['os_family'] == 'Debian'
  1. Exécutez le playbook en modifiant les variables pour tester différents scénarios :
Terminal window
ansible-playbook conditions.yaml
  1. Observez que le paquet et le service sont installés et démarrés en fonction des valeurs des variables.

Les faits Ansible permettent de récupérer des informations sur l’hôte cible, telles que le système d’exploitation, la mémoire disponible, etc. Vous pouvez utiliser ces faits dans les conditions when pour affiner encore plus l’exécution des tâches.

  1. Modifiez le fichier conditions.yaml pour ajouter l’utilisation des faits système :
---
- name: Exemple d'utilisation des faits avec `when`
hosts: all tasks:
- name: Démarrer le service nginx si la mémoire disponible est supérieure à 1 Go
become: true
ansible.builtin.service:
name: nginx
state: started
when: ansible_facts['memtotal_mb'] > 1024
  1. Exécutez le playbook et observez comment Ansible utilise les faits pour conditionner l’exécution des tâches :
Terminal window
ansible-playbook conditions.yaml
  1. Modifiez les conditions et testez différents scénarios pour observer le comportement en fonction des faits système.

Pour valider ce TP, assurez-vous que :

  1. Les conditions when sont utilisées pour contrôler l’exécution des tâches.
  2. Les tâches sont exécutées correctement en fonction des systèmes et des variables. 3. Vous avez expérimenté l’utilisation des faits Ansible pour affiner les conditions.

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

  • Créez un playbook qui utilise des conditions when pour gérer des services différents en fonction de l’OS.
  • Implémentez des conditions basées sur l’espace disque disponible pour décider de l’installation de paquets.
  • Testez l’intégration des conditions when avec des variables d’hôtes spécifiques pour affiner davantage l’exécution des tâches.