Ansible - 4 - 1 Introduction

Les playbooks Ansible sont écrits en YAML. Ce sont des fichiers texte ou de configuration qui suivent un format particulier. Si vous avez déjà travaillé avec XML ou JSON, vous prendrez YAML en main rapidement ; sinon, il s'apprivoise tout aussi facilement. YAML sert à représenter des données — dans notre cas, des données de configuration. Une même information peut être affichée en XML, en JSON ou en YAML, et c'est ce dernier format qui est le plus lisible pour un humain.

La forme la plus simple en YAML est la paire clé/valeur, séparée par deux-points et un espace. Par exemple Fruits: Pomme, Légumes: Carotte, Liquide: Eau, Viande: Poulet. Pour représenter un tableau (une liste), on liste les éléments précédés d'un tiret. Le tiret indique qu'il s'agit d'un élément de tableau.

Dictionnaires et indentation

Un dictionnaire regroupe plusieurs propriétés sous un même élément. Pour représenter les valeurs nutritionnelles de deux fruits (calories, lipides, glucides), on indente chaque propriété sous l'élément parent. L'indentation est critique : toutes les propriétés d'un même élément doivent avoir exactement le même nombre d'espaces devant elles. Un espace supplémentaire sur l'une d'elles, et cette propriété devient l'enfant de la précédente, ce qui produit une erreur de syntaxe du type mapping values are not allowed here.

YAML supporte aussi l'imbrication : une liste peut contenir des dictionnaires, qui eux-mêmes contiennent des listes. Par exemple une liste de fruits où chaque élément est un dictionnaire avec ses informations nutritionnelles.

  • Paire clé/valeur — pour une propriété unique : couleur: rouge.
  • Liste / tableau — pour plusieurs éléments du même type, préfixés par un tiret.
  • Dictionnaire — pour regrouper plusieurs propriétés d'un objet unique.
  • Liste de dictionnaires — pour représenter plusieurs objets ayant chacun plusieurs propriétés (ex. quatre voitures avec couleur, modèle, transmission et prix).

Prenez l'exemple d'une voiture : c'est un objet unique avec des propriétés (couleur, modèle, transmission, prix), donc un dictionnaire. Si on veut décomposer le modèle en nom et année, le modèle devient lui-même un dictionnaire — c'est un dictionnaire dans un dictionnaire. Si on veut stocker plusieurs voitures, on passe à une liste de dictionnaires. YAML, comme XML et JSON, est un moyen générique de représenter des données, qu'il s'agisse d'employés, d'élèves, de voitures ou de tout autre objet.