Ceci est une ancienne révision du document !
YAML Ain’t Markup Language
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.
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.
- YAML est un langage très simple, basé sur du texte et lisible par l’homme, utilisé pour échanger des données entre des personnes et des ordinateurs.
- YAML n’est pas un langage de programmation. Il est principalement utilisé pour stocker des informations de configuration.
- Les fichiers YAML stockent des données et n’incluent pas de commandes ni d’instructions.
- YAML est un langage de sérialisation de données similaire à XML ou JSON. Cependant, il est beaucoup plus lisible et concis par l’homme.
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 peut représenter n’importe quelle structure de données qui peut être représentée à l’aide du format XML ou JSON.
- YAML peut stocker et gérer toutes les données textuelles au format Unicode, comme les fichiers de configuration ou les fichiers journaux. Cela le rend indépendant de la plate-forme logicielle et matérielle pour le stockage, le transport et le partage de données. Il est important de comprendre ce format, car toute modification apportée aux fichiers de configuration peut entraîner un dysfonctionnement de votre application.
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
- Lisible par l’homme - YAML est très lisible par l’homme. Il vous permet de représenter des structures de données complexes d’une manière lisible par l’homme. Pour prouver ce point, même la page d’accueil du site officiel de YAML (https://yaml.org) est affichée comme un document YAML.
- Syntaxe simple et propre - YAML est facile à apprendre et simple à lire. Il peut facilement exprimer une grande variété de structures de données différentes.
- Facile à mettre en œuvre et à utiliser - Il est facile à mettre en œuvre et à utiliser.
- Strict : la spécification YAML dispose d’une très faible marge de manœuvre, ce qui augmente sa robustesse.
- Sans ambiguïté : YAML spécifie sans ambiguïté les structures de données des données sérialisées, il n’est donc pas nécessaire de s’appuyer sur des commentaires ou de la documentation. Comme les structures de données sont sans ambiguïté, il est plus facile d’utiliser des outils automatisés (scripts) pour la lecture et l’écriture de YAML. Par exemple, vous pouvez écrire un script qui lit la structure de données d’un fichier écrit en YAML et la convertit dans un autre format (tel que JSON ou XML).
- Facilité de contrôle de version - YAML stocke le texte brut, de sorte qu’il peut être ajouté à un contrôle de version tel que Git ou Subversion sans aucun problème.
- Portable dans tous les langages de programmation - YAML prend en charge la représentation des séquences sous forme de listes et les mappages sous forme de dictionnaires (hachages dans certains langages) d’une manière indépendante du langage.
- Puissant - Il est plus puissant que JSON lorsqu’il s’agit de spécifier des structures de données complexes. Il s’agit d’un sur-ensemble de JSON, ce qui signifie que tous les documents JSON valides sont également des YAML valides.
- Correspond aux structures de données natives des langages de programmation modernes tels que Python, Ruby et JavaScript. Il existe plusieurs analyseurs YAML dans différentes langues, vous pouvez donc utiliser le même langage pour générer et analyser YAML.
- Modèle de données cohérent pour prendre en charge les outils génériques. Il dispose d’outils puissants, tels que PyYAML.
- Prend en charge le traitement en une passe ou dans une direction : l’analyse de YAML est linéaire. Il n’y a pas de pointeurs avant ou arrière à gérer, il y a donc moins d’ambiguïtés d’analyse.
- Expressif et extensible : par extensibilité, nous entendons que les applications existantes continuent de fonctionner même lorsque de nouvelles données sont ajoutées (ou supprimées).
- Rapide - YAML est rapide à charger et facile à traiter en mémoire.
- Sécurisé : de nombreux problèmes de sécurité dans les langages de programmation sont liés à l’analyse d’entrées non fiables (telles que JSON). Python, Ruby, Java, JavaScript, PHP et bien d’autres permettent aux attaquants d’exploiter ces vulnérabilités en contournant des chaînes d’entrée inattendues vers l’analyseur. YAML est conçu pour empêcher ces types d’exploits en spécifiant le type de données dont chaque partie du flux YAML doit être composée.
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.