Objectif
Écrire un playbook complet de A à Z (et non plus une commande ad-hoc), l’exécuter, observer son résultat, puis le rejouer pour valider l’idempotence.
Environnement disponible
Vous disposez de :
- 1 serveur de contrôle avec Ansible installé
- 1 client Debian :
nrd-web1
Informations de connexion
- Utilisateur :
root - Mot de passe :
formation
Ce que vous allez réaliser
- Configurer l’accès SSH par clé (comme dans le lab découverte)
- Créer l’inventaire
- Écrire un playbook qui installe Apache, démarre le service, et vérifie que le port 80 répond
- Exécuter le playbook en mode
--check --diffd’abord - Exécuter le playbook pour de vrai
- Le rejouer une seconde fois pour observer l’idempotence
Conseils
- Utilisez les noms complets des modules (
ansible.builtin.xxx), c’est le bon réflexe à prendre dès ce premier playbook. - Le module
uripermet de vérifier qu’une URL répond correctement — pratique pour valider qu’Apache tourne réellement, pas juste que le service est “démarré” côté systemd. - Regardez bien le
PLAY RECAPà chaque exécution :changeddoit tomber à 0 à la deuxième tentative.
🧪 Lab · membre
🧪 Démarrer — 30 minVoir la solutionMasquer la solution
Générer une clé SSH et la déployer sur le client
ssh-keygen -t ed25519 -C "ansible@control-serveur"
ssh root@nrd-web1
# Dans .ssh/authorized_keys, coller la clé publique
nano .ssh/authorized_keys
Créer le dossier de travail et l’inventaire
mkdir ansible && cd ansible
nano inventaire.yaml
# inventaire.yaml
all:
hosts:
nrd-web1:
ansible_host: <IP>
Écrire le playbook
nano playbook_apache.yaml
# playbook_apache.yaml
---
- name: Installer et démarrer Apache sur nrd-web1
hosts: nrd-web1
become: yes
tasks:
- name: Installer Apache
ansible.builtin.apt:
name: apache2
state: present
update_cache: yes
- name: Démarrer et activer Apache
ansible.builtin.service:
name: apache2
state: started
enabled: yes
- name: Vérifier que le serveur web répond
ansible.builtin.uri:
url: http://localhost
status_code: 200
Exécuter en mode simulation d’abord
ansible-playbook playbook_apache.yaml -i inventaire.yaml --check --diff
Exécuter pour de vrai
ansible-playbook playbook_apache.yaml -i inventaire.yaml -v
Vous devriez voir changed sur les tâches d’installation et de démarrage, et ok sur la vérification du port 80.
Rejouer le playbook une seconde fois
ansible-playbook playbook_apache.yaml -i inventaire.yaml -v
Cette fois, le PLAY RECAP doit afficher changed=0 : Apache était déjà installé et démarré, Ansible n’a rien eu besoin de refaire. Idempotence confirmée.