Dans cette étape, vous allez écrire votre premier Playbook Ansible. Un playbook est un fichier écrit en format YAML qui décrit un ensemble de tâches à exécuter sur vos hôtes gérés. Vous allez créer un playbook qui installe le serveur web Apache (httpd) et démarre son service sur la machine localhost définie dans votre inventaire.
-
Tout d'abord, utilisez l'éditeur de texte nano pour créer un nouveau fichier nommé apache.yml. Ce fichier contiendra votre playbook.
nano apache.yml
-
À l'intérieur de l'éditeur nano, vous allez définir un "play". Un play est l'unité centrale d'un playbook et associe un groupe d'hôtes à un ensemble de tâches. Ajoutez le contenu suivant à apache.yml.
---: C'est un marqueur YAML standard indiquant le début d'un document.
- name: ...: C'est le début de votre play. Lui donner un nom descriptif est une bonne pratique.
hosts: webservers: Ceci indique à Ansible d'exécuter ce play sur tous les hôtes du groupe webservers de votre fichier d'inventaire.
become: true: Ceci demande à Ansible d'utiliser l'escalade de privilèges (comme sudo) pour exécuter les tâches. Ceci est nécessaire pour des actions comme l'installation de logiciels ou la gestion de services.
tasks:: Ce mot-clé commence la liste des tâches à effectuer.
---
- name: Install and start Apache web server
hosts: webservers
become: true
tasks:
-
Maintenant, ajoutez les tâches à votre playbook. Chaque tâche est une action unique qui appelle un module Ansible. L'indentation est critique en YAML, assurez-vous donc que les tâches sont correctement indentées sous la section tasks:.
- Tâche 1 : Installer httpd. Cette tâche utilise le module
ansible.builtin.dnf pour s'assurer que le paquet httpd est installé. Le paramètre state: present signifie qu'Ansible installera le paquet s'il est manquant, et ne fera rien s'il est déjà installé.
- Tâche 2 : Démarrer le service httpd. Cette tâche utilise le module
ansible.builtin.service. state: started garantit que le service est en cours d'exécution, et enabled: true garantit qu'il démarrera automatiquement au démarrage du système.
Ajoutez les tâches suivantes à votre fichier apache.yml, directement sous la ligne tasks: :
- name: Install httpd package
ansible.builtin.dnf:
name: httpd
state: present
- name: Start and enable httpd service
ansible.builtin.service:
name: httpd
state: started
enabled: true
-
Votre playbook apache.yml complet devrait maintenant ressembler à ceci. Vérifiez attentivement l'indentation.
---
- name: Install and start Apache web server
hosts: webservers
become: true
tasks:
- name: Install httpd package
ansible.builtin.dnf:
name: httpd
state: present
- name: Start and enable httpd service
ansible.builtin.service:
name: httpd
state: started
enabled: true
Enregistrez le fichier et quittez nano (Ctrl+O, Entrée, Ctrl+X).
-
Avant d'exécuter votre playbook, il est conseillé de vérifier sa syntaxe à l'aide de la commande ansible-playbook avec l'indicateur --syntax-check.
ansible-playbook --syntax-check apache.yml
Si la syntaxe est correcte, la commande affichera le nom du fichier du playbook sans aucune erreur.
playbook: apache.yml
-
Maintenant, exécutez le playbook.
ansible-playbook apache.yml
Ansible parcourra les tâches. Comme il s'agit de la première exécution, vous verrez le statut changed pour les deux tâches, indiquant que l'état du système a été modifié.
PLAY [Install and start Apache web server] *************************************
TASK [Gathering Facts] *********************************************************
ok: [localhost]
TASK [Install httpd package] ***************************************************
changed: [localhost]
TASK [Start and enable httpd service] ******************************************
changed: [localhost]
PLAY RECAP *********************************************************************
localhost : ok=3 changed=2 unreachable=0 failed=0 skipped=0 rescued=0 ignored=0
-
Enfin, vérifiez que le serveur web Apache est en cours d'exécution en utilisant curl pour demander la page web par défaut depuis localhost.
curl http://localhost
Vous devriez voir la page de test par défaut d'Apache, ce qui confirme que votre playbook a fonctionné avec succès.
<html>
<head>
<title>Test Page</title>
</head>
<body>
<h1>Test Page</h1>
<p>This is the default test page for the Apache HTTP server.</p>
</body>
</html>