Dans cette étape, vous apprendrez à utiliser des variables dans un playbook Ansible. Les variables sont essentielles pour rendre votre automatisation flexible, réutilisable, plus facile à lire et à maintenir. Au lieu de coder en dur des valeurs comme les noms de paquets ou les chemins de fichiers directement dans vos tâches, vous pouvez les définir en tant que variables et les référencer tout au long du playbook. Nous allons créer un playbook simple qui utilise des variables pour installer le serveur web Apache (httpd) et déployer une page web de base.
-
Accéder au répertoire du projet
Tout d'abord, assurez-vous d'être dans le répertoire de travail correct. Tout votre travail pour ce laboratoire sera effectué dans le répertoire ~/project, qui a été créé pour vous.
cd ~/project
Installez le paquet ansible-core.
sudo dnf install -y ansible-core
-
Créer le playbook Ansible
Maintenant, créons notre fichier de playbook. Nous l'appellerons playbook.yml. Vous pouvez utiliser un éditeur de texte en ligne de commande comme nano pour créer et modifier le fichier.
nano playbook.yml
Cette commande ouvre un fichier vide dans l'éditeur nano. Ajoutez maintenant la partie initiale du playbook. Cette section définit le nom du play, l'hôte cible (localhost, puisque nous l'exécutons sur la même machine) et une section vars où nous définirons nos variables.
---
- name: Deploy Apache using variables
hosts: localhost
become: true
vars:
web_pkg: httpd
web_content: "Hello from Ansible Variables"
Voici une décomposition de la structure du playbook :
hosts: localhost : Spécifie que le playbook doit s'exécuter sur la machine locale.
become: true : Indique à Ansible d'utiliser l'élévation de privilèges (équivalent à sudo) pour les tâches, ce qui est nécessaire pour installer des logiciels.
vars : Il s'agit d'un dictionnaire où nous définissons nos paires clé-valeur pour les variables. Nous avons défini web_pkg pour le nom du paquet et web_content pour le contenu de notre page web de test.
-
Ajouter des tâches au playbook
Ensuite, sous la section vars, ajoutez les tasks qui utiliseront ces variables. La première tâche installera le paquet Apache, et la seconde créera un fichier index.html. Ajoutez le bloc tasks suivant à votre fichier playbook.yml tout en restant dans l'éditeur nano.
tasks:
- name: Install the latest version of Apache
ansible.builtin.dnf:
name: "{{ web_pkg }}"
state: latest
- name: Create a basic index.html file
ansible.builtin.copy:
content: "{{ web_content }}"
dest: /var/www/html/index.html
Remarquez comment nous utilisons {{ variable_name }} pour référencer les variables que nous avons définies précédemment. Il s'agit du templating Jinja2, qu'Ansible utilise pour les variables. Cela rend les définitions de tâches génériques ; si vous vouliez installer Nginx à la place, il vous suffirait de modifier la variable web_pkg, et non la tâche elle-même.
-
Réviser et enregistrer le playbook
Votre fichier playbook.yml complet devrait maintenant ressembler à ceci. Vérifiez le contenu et l'indentation, car YAML est très sensible aux espaces.
---
- name: Deploy Apache using variables
hosts: localhost
become: true
vars:
web_pkg: httpd
web_content: "Hello from Ansible Variables"
tasks:
- name: Install the latest version of Apache
ansible.builtin.dnf:
name: "{{ web_pkg }}"
state: latest
- name: Create a basic index.html file
ansible.builtin.copy:
content: "{{ web_content }}"
dest: /var/www/html/index.html
Pour enregistrer le fichier dans nano, appuyez sur Ctrl+X, puis Y pour confirmer les modifications, et enfin Entrée pour écrire le fichier sous le nom playbook.yml.
-
Vérifier la syntaxe du playbook
Avant d'exécuter un playbook, il est toujours recommandé de vérifier sa syntaxe pour détecter d'éventuelles erreurs.
ansible-playbook --syntax-check playbook.yml
Si la syntaxe est correcte, vous verrez le chemin du fichier du playbook en sortie, confirmant qu'il est valide :
playbook: playbook.yml
Si vous voyez des erreurs, rouvrez le fichier avec nano playbook.yml et corrigez-les. Faites très attention à l'indentation correcte (généralement deux espaces).
-
Exécuter le playbook
Maintenant, exécutez le playbook. Ansible se connectera à localhost, lira les variables et exécutera les tâches.
ansible-playbook playbook.yml
Vous devriez voir une sortie indiquant l'exécution réussie de chaque tâche. Le statut changed signifie qu'Ansible a apporté une modification au système, comme l'installation d'un paquet ou la création d'un fichier.
PLAY [Deploy Apache using variables] *******************************************
TASK [Gathering Facts] *********************************************************
ok: [localhost]
TASK [Install the latest version of Apache] ************************************
changed: [localhost]
TASK [Create a basic index.html file] ******************************************
changed: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
Si vous exécutez le playbook une seconde fois, les tâches devraient rapporter ok au lieu de changed, car le paquet est déjà installé et le fichier possède déjà le contenu correct. Cela démontre l'idempotence d'Ansible.
-
Vérifier manuellement la configuration
Bien que le playbook soit terminé, vous pouvez vérifier manuellement que les tâches ont fonctionné comme prévu. Tout d'abord, vérifiez si le paquet httpd a été installé :
rpm -q httpd
La sortie devrait afficher le nom et la version du paquet :
httpd-2.4.57-7.el9.x86_64
Ensuite, vérifiez le contenu du fichier index.html :
cat /var/www/html/index.html
La sortie devrait correspondre à la valeur de votre variable web_content :
Hello from Ansible Variables
Vous avez utilisé avec succès des variables dans un playbook Ansible pour configurer un système.