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.
En résumé
Cette leçon introduit YAML (YAML Ain't Markup Language), le format de configuration utilisé par tous les playbooks Ansible. YAML est un langage de sérialisation de données simple et lisible, qui utilise des paires clé-valeur, des listes (tableaux) et des dictionnaires pour représenter des données structurées. La vidéo compare YAML avec d'autres formats comme XML et JSON, puis explore la syntaxe YAML en détail, notamment l'indentation, les listes, et les structures imbriquées complexes.
Points clés
- YAML est le format natif des playbooks Ansible ; il utilise une syntaxe simple basée sur des paires clé-valeur séparées par deux-points
- L'indentation en YAML est critique : elle indique la hiérarchie des données et un mauvais alignement génère des erreurs de syntaxe
- Les listes en YAML sont définies par des tirets (-) sur des lignes distinctes et regroupent plusieurs éléments du même type
- Les dictionnaires regroupent des propriétés (paires clé-valeur) sous une clé unique et peuvent être imbriqués ou contenir d'autres structures
- YAML supporte des structures complexes et imbriquées : listes de dictionnaires, dictionnaires de dictionnaires, plusieurs niveaux de profondeur
- Comparé à XML et JSON, YAML est plus lisible, plus compact et plus facile à écrire, ce qui le rend idéal pour les fichiers de configuration
Questions fréquentes
Pourquoi utiliser YAML plutôt que XML ou JSON pour les playbooks Ansible ?
YAML est plus lisible et plus facile à écrire que XML ou JSON. Il utilise une syntaxe minimaliste avec des espaces et des tirets, ce qui le rend idéal pour les fichiers de configuration complexes. Tous les playbooks Ansible utilisent YAML comme format standard car il balance lisibilité et compacité.
Quelle est l'importance de l'indentation en YAML et comment l'utiliser correctement ?
L'indentation en YAML est critique pour la structure des données : elle indique la hiérarchie et l'imbrication des éléments. Chaque propriété d'un même objet doit avoir exactement le même nombre d'espaces au début (jamais de tabulations). Des espaces mal alignés créent une syntaxe invalide qui génère des erreurs.
Quelle est la différence entre une liste et un dictionnaire en YAML ?
Une liste (tableau) en YAML regroupe plusieurs éléments du même type, marqués par un tiret (-) au début de chaque ligne. Un dictionnaire groupe des propriétés (paires clé-valeur) sous une clé unique avec une indentation. Une liste de dictionnaires permet de stocker plusieurs objets avec leurs propriétés, ce qui est courant dans les playbooks Ansible.