Objectifs
- Comprendre YAML, play, hosts, become et tasks.
- Utiliser les noms de modules FQCN.
- Construire un playbook idempotent pour Nginx.
- Distinguer exécution normale, --check et --diff.
Playbooks Ansible
Un playbook est une liste YAML de plays. Chaque play cible des hosts, peut demander become et exécute une liste ordonnée de tasks nommées.
Les noms pleinement qualifiés, ou FQCN, comme ansible.builtin.package rendent l’origine du module explicite et évitent les ambiguïtés entre collections.
Un playbook Nginx simple
Ce play vise le groupe web, élève les privilèges et décrit deux états : le paquet Nginx doit être présent, puis le service doit être démarré et activé.
- --- marque conventionnellement le début du document YAML.
- hosts: web sélectionne le groupe web de l’inventory.
- become: true demande l’élévation pour les tâches du play.
- tasks est une liste : indentation et tirets YAML sont significatifs.
---
- name: Installer et démarrer Nginx
hosts: web
become: true
tasks:
- name: Installer le paquet Nginx
ansible.builtin.package:
name: nginx
state: present
- name: Démarrer et activer Nginx
ansible.builtin.service:
name: nginx
state: started
enabled: trueValider puis exécuter
Le mode normal peut modifier les cibles. --check demande une simulation, mais le résultat dépend du support de ce mode par chaque module. --diff montre un avant/après pour les modules compatibles et peut révéler du contenu sensible.
ansible-playbook -i inventory.ini nginx.yml --syntax-checkansible-playbook -i inventory.ini nginx.yml --check --limit web01ansible-playbook -i inventory.ini nginx.yml --check --diff --limit web01ansible-playbook -i inventory.ini nginx.yml --limit web01--check n’est pas une garantie absolue et --diff peut afficher des secrets. Vérifiez le support des modules et désactivez les diffs sur les tâches sensibles.
Rendre le playbook maintenable
Nommez les plays et les tâches selon leur intention, utilisez un module par responsabilité et relisez le résultat changed. Une deuxième exécution sans changement attendu devrait idéalement rester stable.
- Deux espaces d’indentation et aucune tabulation.
- FQCN pour les modules et noms de tâches explicites.
- Cible limitée et mode check avant un déploiement plus large.
- Secrets absents du YAML en clair.
Erreur fréquente : faire confiance aveuglément à --check
Mini résumé
- Un playbook YAML contient un ou plusieurs plays et des tâches ordonnées.
- hosts délimite la cible et become doit être accordé avec prudence.
- Les FQCN clarifient le module utilisé.
- Syntax-check, check, diff, limit puis revue forment un workflow prudent.
Outils associés
Générer un playbook Ansible
Utilisez Ansible Playbook Generator pour préparer une base YAML locale, puis relisez et adaptez chaque tâche avant utilisation.
Ouvrir l’outilMini quiz
Trois questions pour vérifier les notions essentielles de la leçon.