Aller au contenu principal

Variables et boucles

Notions théoriques

Dans Ansible, les variables et les boucles sont des outils puissants qui permettent d'ajouter de la flexibilité et de la réutilisabilité à vos Playbooks.

Les variables dans Ansible

Les variables sont des valeurs nommées qui peuvent être utilisées dans votre Playbook.

Les variables peuvent être :

  • définies dans l'inventaire,
  • passées en ligne de commande,
  • incluses dans des fichiers séparés
  • ou déterminées à la volée avec des informations découvertes pendant l'exécution.

Les boucles dans Ansible

Les boucles permettent d'exécuter une tâche plusieurs fois.

Les boucles permettent par exemple d'installer plusieurs paquets ou créer plusieurs utilisateurs.

remarque

Ansible utilise la directive loop pour réaliser des boucles.

Exemple pratique

Imaginons que nous voulons créer plusieurs utilisateurs sur nos conteneurs.

Nous pouvons utiliser une boucle dans notre Playbook pour le faire :

---
- name: Ajout d'utilisateurs
hosts: conteneurs
become: yes
vars:
users:
- alice
- bob
- carol
tasks:
- name: Creation des utilisateurs
user:
name: "{{ item }}"
state: present
loop: "{{ users }}"
  • Dans cet exemple, nous avons défini une variable users qui est une liste de noms d'utilisateurs.
  • La tâche Création des utilisateurs utilise cette liste pour créer chaque utilisateur sur les hôtes cibles.
remarque

Le paramètre state: present indique que la ressource spécifiée (ici, des utilisateurs) doit exister sur le système cible.

Lorsqu'on utilise le module user avec state: present, Ansible va s'assurer que les utilisateurs listés existent sur les machines cibles. Si l'utilisateur n'existe pas déjà, Ansible va le créer.

Donc, pour chaque élément de la liste users (qui contient "alice", "bob" et "carol"), le playbook va exécuter la tâche "Creation des utilisateurs" et s'assurer que ces comptes utilisateurs sont présents sur les hôtes ciblés par le groupe conteneurs.

  • Si un utilisateur spécifié est déjà présent sur le système, Ansible ne fera rien pour cet utilisateur.
  • Si l'utilisateur n'est pas présent, Ansible le créera.

Test de mémorisation/compréhension


À quoi servent les variables dans Ansible ?


Quelle est la syntaxe pour utiliser une variable dans un Playbook Ansible ?


Comment répéter une tâche pour chaque élément d'une liste dans Ansible ?


Où peut-on définir des variables pour les utiliser dans un Playbook Ansible ?



TP - Déployer des configurations Ansible

Votre mission consiste à personnaliser la page d'accueil d'Apache sur chacun de vos conteneurs.

Pour cela, vous allez utiliser un Playbook Ansible qui créera un fichier index.html personnalisé pour chaque conteneur.

  1. Créez un fichier nommé personalise_apache.yml dans le répertoire /root/ansible.

  2. Ouvrez ce fichier avec un éditeur de texte de votre choix.

  3. Rédigez le Playbook nécessaire pour créer un fichier index.html dans le répertoire /var/www/html avec le contenu de la page = contenu de la page d'accueil :

---
- name: Personnalisation de la page d'accueil Apache
hosts: conteneurs
become: yes
tasks:
copy:
content: "contenu de la page d'accueil"
dest: /var/www/html/index.html
  1. Dans votre Playbook, créez la variable contenu_page :
---
- name: Personnalisation de la page d'accueil Apache
hosts: conteneurs
become: yes
vars:
contenu_page: "Bienvenue sur le serveur {{ ansible_hostname }}"
tasks:
- name: Creation de la page d'accueil personnalisee
copy:
content: "contenu de la page d'accueil"
dest: /var/www/html/index.html
remarque

Nous utilisons la variable ansible_hostname, qui contient le nom de la machine hôte, pour identifier chaque conteneur.

  1. Modifier votre Playbook pour copier le contenu de la variable contenu_page dans le fichier /var/www/html/index.html (à la place de "contenu de la page d'accueil") :
---
- name: Personnalisation de la page d'accueil Apache
hosts: conteneurs
become: yes
vars:
contenu_page: "Bienvenue sur le serveur {{ ansible_hostname }}"
tasks:
- name: Creation de la page d'accueil personnalisee
copy:
content: "{{ contenu_page }}"
dest: /var/www/html/index.html
  1. Exécutez le Playbook sur vos conteneurs cibles.

  2. Vérifiez que la page d'accueil est personnalisée en accédant à l'adresse IP de chacun de vos conteneurs via un navigateur Web ou la commande curl.

  3. Accédez à vos 3 serveurs Web via votre navigateur :

    http://localhost:8081
    http://localhost:8082
    http://localhost:8083

Vous devriez voir le message personnalisé "Bienvenue sur le serveur ..." avec le nom de l'hôte correspondant.

Une solution