Table des matières

YAML Ain’t Markup Language

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

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.

Utilisation

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.

Avantages

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.

Syntaxe de base

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 (:).

Paires clé-valeur

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

Liste

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.

Sensibilité à la casse

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

Espaces et indentations

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.

Prise en charge de plusieurs documents en YAML

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

Style de bloc

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

Style de flux

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 } 

Commentaires

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 :

#   __     __        __  __  _      
#   \ \   / / /\    |  \/  || |     
#    \ \_/ / /  \   | \  / || |     
#     \   / / /\ \  | |\/| || |     
#      | | / ____ \ | |  | || |____ 
#      |_|/_/    \_\|_|  |_||______|  

Valider un document YAML

Validation en ligne (Rapide)

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.

Résumé

  1. Les éléments d’une liste en YAML sont représentés en la faisant précéder de - (trait d’union).
  2. Les paires clé-valeur en YAML sont représentées par <key>:<value>.
  3. YAML est sensible à la casse.
  4. YAML utilise des espaces et des indentations pour définir la structure du document.
  5. Pour définir un fichier YAML, nous utilisons .yml ou .yaml comme extension de fichier.
  6. Différents documents en YAML peuvent être séparés à l’aide de trois tirets (—).
  7. À l’aide de trois points, vous marquez la fin d’un document sans en commencer un nouveau.
  8. Un document de style bloc utilise des espaces pour structurer le document.
  9. Le style Flow fait de YAML une extension de JSON. Le style Flow est un peu moins lisible que le style bloc, mais il offre plus de compacité au document.
  10. Tout texte après # qui n’est pas inclus dans ''(guillemets) ou «  » (guillemets) est considéré comme un commentaire.
  11. YAML ne prend pas en charge les commentaires de bloc ou sur plusieurs lignes.