Ansible · Playbooks

Playbooks

Écrivez des playbooks YAML lisibles avec hosts, become, tasks et modules FQCN, puis validez-les prudemment.

Leçon disponible
20 min

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.
nginx.yml
---
- 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: true

Valider 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.

Vérifier la syntaxe
ansible-playbook -i inventory.ini nginx.yml --syntax-check
Simuler sur une cible limitée
ansible-playbook -i inventory.ini nginx.yml --check --limit web01
Simuler avec différences
ansible-playbook -i inventory.ini nginx.yml --check --diff --limit web01
Exécution normale après revue
ansible-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.

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’outil

Mini quiz

Trois questions pour vérifier les notions essentielles de la leçon.

1. Que contrôle la clé hosts d’un play ?
2. Quelle limite faut-il connaître à propos de --check ?
3. Pourquoi écrire ansible.builtin.service plutôt que seulement service ?