Aller au contenu

GUIDE TECHNIQUE · ANSIBLE

Écrire un premier playbook Ansible idempotent

Créer un playbook YAML complet avec une tâche copy idempotente ; vérifier la syntaxe, anticiper avec --check/--diff, appliquer puis démontrer que la seconde exécution ne change rien.

Niveau Débutant4 min de lecture— vuesAnsible

L’ESSENTIEL EN BREF

Comment procéder ?

Créer un playbook YAML complet avec une tâche copy idempotente ; vérifier la syntaxe, anticiper avec --check/--diff, appliquer puis démontrer que la seconde exécution ne change rien.

Résultat à atteindre : Le fichier demo.yml est complet, pas un simple extrait sans contexte.

Avant de commencer : ansible-playbook disponible sur un poste de recette.

01 · CADRAGE

Ce que vous allez mettre en place

Créer un playbook YAML complet avec une tâche copy idempotente ; vérifier la syntaxe, anticiper avec --check/--diff, appliquer puis démontrer que la seconde exécution ne change rien.

Pour qui : Administrateurs, ingénieurs DevOps, SRE et équipes de recette

Environnement et versions

ansible-core récent ; démonstration localhost avec ansible.builtin.copy, sans devenir root.

Vérifiez la compatibilité avec votre environnement réel. Les versions ne sont jamais présumées identiques d’un tenant à l’autre.

02 · AVANT DE COMMENCER

Prérequis et points de contrôle

  • ansible-playbook disponible sur un poste de recette.
  • Répertoire de travail sous /tmp ou dans un dossier dont on est propriétaire.
  • Aucun vrai fichier applicatif utilisé pour cette démonstration.

03 · VUE D’ENSEMBLE

Comprendre l’architecture et les flux

ARCHITECTURE TECHNIQUEComprendre la chaîne de bout en bout
01Inventaire
02Playbook
03Modules
04État cible
05Contrôle
Le plan de contrôle Ansible applique les modules depuis le poste de pilotage ; check, diff et seconde passe permettent d'évaluer les modifications.

04 · TUTORIEL

Procédure complète, étape par étape

Chaque étape explique l’action, sa raison, le contrôle attendu et les erreurs habituelles. Adaptez les exemples aux paramètres de votre propre environnement.

01

ÉTAPE 1 / 5

Vérifier la machine locale

Un playbook autonome évite de dépendre de l'inventaire implicite ou d'un accès SSH.

  1. Créer un dossier sur le poste local.
  2. Confirmer la version de ansible-playbook.
  3. Réserver un chemin de fichier de test qui n'existe pas encore.
Exemple techniqueÀ adapter à votre environnement
mkdir -p ansible-playbook-lab && cd ansible-playbook-lab
ansible-playbook --version
Ce qui se passe à cette étape
1Inventaire
2Vérifier la machine locale
3Contrôle

À vérifier : La commande ansible-playbook fonctionne localement.

Point de vigilance ADN : Ne pas utiliser le fichier d'une application réelle comme destination du premier exercice.

02

ÉTAPE 2 / 5

Créer le playbook minimal

Le module copy compare contenu et attributs au lieu de réécrire le fichier à chaque exécution.

  1. Créer demo.yml avec un play unique et connection: local.
  2. Conserver le fichier de destination dans /tmp et un mode explicite.
  3. Utiliser un contenu de recette constant.
Exemple techniqueÀ adapter à votre environnement
cat > demo.yml <<'EOF'
- name: Ecrire un marqueur de recette
  hosts: localhost
  connection: local
  gather_facts: false
  tasks:
    - name: Creer le fichier marqueur
      ansible.builtin.copy:
        content: "ADN recette Ansible\n"
        dest: /tmp/adn-ansible-demo.txt
        mode: '0644'
EOF
Ce qui se passe à cette étape
1Playbook
2Créer le playbook minimal
3Contrôle

À vérifier : demo.yml est un playbook complet avec tâche copy déclarative.

Point de vigilance ADN : Le fichier de recette peut être supprimé après les tests ; ne pas confondre mode 0644 et permissions appropriées aux secrets.

03

ÉTAPE 3 / 5

Tester la syntaxe

Le test syntaxique n'effectue pas la tâche et évite de confondre une erreur YAML avec un problème de connexion.

  1. Lancer --syntax-check.
  2. Relire les erreurs de module ou d'indentation.
  3. Éviter de poursuivre si la syntaxe est invalide.
Exemple techniqueÀ adapter à votre environnement
ansible-playbook -i localhost, -c local demo.yml --syntax-check
Ce qui se passe à cette étape
1Modules
2Tester la syntaxe
3Contrôle

À vérifier : Le playbook est reconnu sans erreur de syntaxe.

Point de vigilance ADN : Une syntaxe valide ne garantit pas que les privilèges et chemins fonctionnent lors de l'exécution.

04

ÉTAPE 4 / 5

Exécuter en mode check et diff

--check et --diff prévisualisent le changement sur les modules qui prennent en charge ces modes.

  1. Lancer en dry-run et comparer le contenu proposé.
  2. Vérifier qu'aucun fichier de production n'est ciblé.
  3. Confirmer qu'une création de /tmp est attendue.
Exemple techniqueÀ adapter à votre environnement
ansible-playbook -i localhost, -c local demo.yml --check --diff
Ce qui se passe à cette étape
1État cible
2Exécuter en mode check et diff
3Contrôle

À vérifier : Un changement prévisionnel est affiché ; aucune donnée sensible n'apparaît.

Point de vigilance ADN : Certains modules ne simulent pas entièrement leurs effets avec --check ; vérifier leur documentation.

05

ÉTAPE 5 / 5

Appliquer puis relancer pour vérifier l'idempotence

La seconde passe sans changement démontre l'idempotence du module dans ce scénario.

  1. Appliquer le playbook une première fois.
  2. Le rejouer immédiatement sans modifier demo.yml.
  3. Observer changed=0 à la seconde passe et supprimer le fichier de recette si souhaité.
Exemple techniqueÀ adapter à votre environnement
ansible-playbook -i localhost, -c local demo.yml
ansible-playbook -i localhost, -c local demo.yml
cat /tmp/adn-ansible-demo.txt
# Nettoyage : rm /tmp/adn-ansible-demo.txt
Ce qui se passe à cette étape
1Contrôle
2Appliquer puis relancer pour vérifier l'idempotence
3Contrôle

À vérifier : Première passe : changed=1 ; seconde passe : changed=0 si le fichier n'a pas été modifié entre-temps.

Point de vigilance ADN : Ce résultat prouve l'idempotence de cette tâche, pas de tous les playbooks Ansible.

SOURCES ET FIABILITÉ

Statut de validation du guide

Rédaction : ADN Consulting. Statut : procédure documentée, exécution en laboratoire non attestée.

Les exemples et versions indiqués doivent être vérifiés sur un environnement autorisé. Aucune validation individuelle par un consultant n’est revendiquée sans preuve.

Documentation officielle de référence

05 · RECETTE

Comment vérifier que tout fonctionne ?

Résultat attenduContrôles avant de considérer la procédure terminée
01

Le fichier demo.yml est complet, pas un simple extrait sans contexte.

02

--syntax-check et --check passent.

03

Le fichier de recette contient le texte attendu.

04

Le recap de la seconde passe indique changed=0.

06 · DIAGNOSTIC

Problèmes fréquents et résolution

Échec de syntaxe

Cause probable : Format du fichier ou option incompatible

Que faire : Vérifier indentation YAML, version et documentation officielle.

Accès refusé

Cause probable : Droits ou contexte de connexion incorrects

Que faire : Contrôler l'utilisateur, le namespace et les permissions.

État non conforme

Cause probable : Configuration non appliquée ou ressource différente

Que faire : Relire les sorties détaillées, événements et paramètres effectifs.

Le conseil de l’expert ADN

Avant de généraliser cette configuration, validez-la sur un périmètre représentatif, documentez les critères de réussite et conservez une procédure de retour arrière. Une automatisation fiable se juge sur l’état final observé, les permissions maîtrisées et un retour arrière testé.

07 · QUESTIONS PRATIQUES

Questions fréquentes

Puis-je lancer cet exemple directement en production ?

Non : les valeurs et droits sont illustratifs. Une recette, une revue de sécurité et une procédure de retour arrière sont nécessaires.

Le succès de la commande suffit-il ?

Non, il faut observer le résultat attendu sur la ressource ou le service ciblé.

AUTRES TECHNOLOGIES

Guides complémentaires

Ce tutoriel s’inscrit dans une chaîne technique plus large. Retrouvez les méthodes associées aux technologies voisines.

Tous les guides Ansible

Pour aller plus loin