Ressource : https://tutoriels.edu.lat/pub/yaml?alias=tutoriel-yaml
YAML est un format de données très populaire pour stocker des informations de configuration et est utilisé dans presque tous les outils DevOps modernes tels que Docker, Kubernetes, Ansible et bien d’autres.
JSON et XML sont aussi des façons d'écrire des fichiers de configuration. Cependant, Yaml gagne plus de popularité, et voici les raisons suivantes:
La principale différence entre YAML et XML ou JSON est la façon dont la structure des données est définie. Pour YAML, la définition est basée sur l'indentation de la ligne et la séparation de ligne. Un mauvais espacement pour YAML augmentera une erreur, mais cela fait de YAML une option lisible par l'homme parmi les trois options.
YAML est un langage de sérialisation de données qui vous permet de représenter les données dans un format facile à lire. La syntaxe de YAML est simple, et le langage offre plusieurs fonctionnalités qui le rendent puissant et polyvalent. YAML est utilisé par de nombreux langages de programmation, et sa popularité ne fera que continuer à croître.
La sérialisation des données est le processus de conversion d’objets de données, ou d’états d’objet présents dans des structures de données complexes, en un flux d’octets pour le stockage, le transfert et la distribution sous une forme qui peut permettre la récupération de sa structure d’origine.
La messagerie(messaging) consiste à envoyer des informations à travers divers composants logiciels ou applications.
YAML est utilisé dans les fichiers de configuration, les fichiers journaux, la persistance d’objets, la mise en cache et la messagerie (envoi d’informations à travers divers composants logiciels ou applications).
La persistance(persistence) est le processus qui consiste à préserver l’état d’un objet plus longtemps que la durée de vie ou la durée du processus de création de l’objet. Ceci est réalisé en stockant l’état de l’objet dans une mémoire non volatile comme un disque dur au lieu d’une mémoire volatile comme la RAM.
La mise en cache(caching) est une technique qui consiste à stocker une copie d’une ressource demandée à plusieurs reprises et à la restituer à partir de la copie elle-même plutôt qu’à partir du serveur distant. Cela rend l’application plus réactive.
En raison des avantages ci-dessus, de nombreux outils et applications modernes s’appuient sur YAML.
Il est important de comprendre YAML, car toute modification apportée aux fichiers qui stockent les données de configuration au format YAML peut entraîner un dysfonctionnement d’une application basée sur celui-ci.
YAML est utilisé pour stocker des listes ou des séquences d’éléments, des paires clé-valeur ou des mappages.
La liste (également appelée séquence) est une collection ordonnée d’éléments. Une séquence est représentée par des crochets ([]). Chaque élément de la séquence est séparé par une nouvelle ligne suivie d’une virgule (, ). Un élément peut être de n’importe quel type comme des chaînes, des nombres ou des cartes, etc.
Les paires clé-valeur (également appelées mappage) sont un ensemble non ordonné de paires clé/valeur. Cependant, les clés ne sont pas uniques car elles peuvent avoir des valeurs en double. Chaque élément d’un mappage est séparé par une nouvelle ligne suivie d’un caractère deux-points (:).
Une paire clé-valeur est une structure de données composée d’une clé et d’une valeur. La clé est utilisée pour identifier la valeur, et la valeur peut être n’importe quel type de données.
Les paires clé-valeur sont représentées à l’aide de la syntaxe suivante : <key>: <value> où <key> représente le nom et <value> représente les données séparées par : (l’espace est obligatoire).
Exemple de paire clé-valeur :
Clé : Valeur
Une liste est une structure de données simple composée de zéro ou plusieurs éléments ordonnés. En d’autres termes, une liste est un ensemble ordonné de données.
visualisation d’une liste ou d’une séquence Une liste est représentée en faisant précéder ses éléments d’un - (trait d’union).
Syntaxe
- <élément 1> - <élément 2> - ... - <élément n>
Sa syntaxe simple ne limite pas les capacités linguistiques de YAML. Le langage est suffisamment riche pour représenter presque toutes les structures de données ou objets imaginables à l’intérieur d’un programme informatique en cours d’exécution sous la forme d’un fichier texte brut lisible.
Vous trouverez ci-dessous quelques-unes des principales caractéristiques de YAML qui en font une excellente option pour le formatage des données.
YAML est sensible à la casse, donc la clé « DATA » serait différente de « data ».
Chacun des éléments de la liste ci-dessous sera traité comme un élément de liste unique et une paire clé/valeur unique, car la chaîne contient différentes casses d’alphabets.
- DATA - data - key: data - KEY: DATA
Les structures YAML sont déterminées par des espaces et des indentations similaires à ceux du langage de programmation Python. Les espaces sont le seul moyen d’obtenir une indentation. Les tabulations ne sont PAS autorisés dans YAML.
Le code ci-dessous représente une liste sous la forme de YAML.
Learning Objectives: - What is YAML? - Basic Syntax - Data Types - Complex Data Types - Advance Features - Tools Leveraging YAML - Parsers and Emitters
Dans un langage de programmation basé sur C, cela aurait été représenté par programmation sous la forme de l’extrait de code ci-dessous :
LearningObjectives[0] = "What is YAML?" LearningObjectives[1] = "Basic Syntax" LearningObjectives[2] = "Data Types" LearningObjectives[3] = "Complex Data Types" LearningObjectives[4] = "Advance Features" LearningObjectives[5] = "Tools Leveraging YAML" LearningObjectives[6] = "Parsers and Emitters"
Conseil : Lors de la modification d’un fichier YAML, utilisez un éditeur de texte pour vérifier qu’il n’y a pas de tabulations à la place des espacements. Cela peut être fait en activant l’affichage des caractères d’espacement.
Pour définir un fichier YAML, nous utilisons principalement les extensions .yml ou .yaml, par exemple config.yml. Cependant, certains outils peuvent utiliser une extension différente pour spécifier l’objectif du fichier.
Consultez l’extrait de code ci-dessous pour savoir comment créer plusieurs documents au sein d’un seul fichier ou flux.
--- - Fichier XML - JSON - CSV (en anglais) --- -Unicode -ASCII - UTF8 ...
Un document de style bloc utilise des espaces pour structurer le document. Il est beaucoup plus facile à lire, mais il est moins compact.
Exemple :
color: - red - yellow - blue
YAML a une syntaxe alternative appelée style de flux, il permet d’écrire des séquences et des mappages en ligne sans avoir à compter sur l’indentation, en utilisant une paire de crochets [] et d’accolades {} respectivement.
Le style Flow est une extension de JSON. Il est moins facile à lire ; Cependant, il offre plus de compacité.
Exemples
Couleur : [rouge, bleu]
et
- { nom : 'James', âge : 35 }
Voici quelques exemples de commentaires
## Un commentaire d’une seule ligne
Un commentaire peut commencer n’importe où dans la ligne.
## le document commence ci-dessous --- clé : « valeur » # mappage # Une liste de deux éléments liste: - « item 1 » # première valeur - « item 2 » # deuxième valeur --- ## fin du document
Conseil : YAML ne prend pas en charge les commentaires de bloc ou sur plusieurs lignes.
Pour créer un commentaire sur plusieurs lignes, vous devez suffixer chaque ligne avec un caractère #.
## Il s’agit d’une multi-ligne ## commentaire en YAML. Il y a ## pas d’autre façon de créer ## bloquer les commentaires.
Vous trouverez ci-dessous un autre exemple de commentaires YAML :
# __ __ __ __ _ # \ \ / / /\ | \/ || | # \ \_/ / / \ | \ / || | # \ / / /\ \ | |\/| || | # | | / ____ \ | | | || |____ # |_|/_/ \_\|_| |_||______|
Si vous voulez juste tester un fichier YAML sans installer d'outil, utiliser ces sites :
Avantage : Rapide et pratique, mais pas toujours suffisant pour une utilisation avancée.
la validation est aussi possible en Python, en PHP ou en ligne de commande.