Introduction au YAML

culture générale informatique developpement devops Dec 02, 2022

Salut,

YAML est très populaire

Utilisé dans Docker, Kubernetes, Ansible, Prometheus ....

C'est un format largement utilisé dans le monde du DevOps

Donc c'est très intéressant de l'apprendre

D'ailleurs on en a vu dans l'article sur Comment faire une CICD dans Gitlab

C'est quoi YAML

C'est un langage de sérialisation comme XML ou JSON

Sérialisation, c'est à dire un format commun de tous qui permet de transférer des données quelque soit la techno utilisée

YAML est un acronyme récursif : YAML ain't Markup Language

On utilise l'extension .yaml ou .yml


Pourquoi connaitre le YAML ?

C'est facilement lisible par les humains
C'est intuitif

Exemple YAML, XML, JSON

 

Petite note, YML est un "superset" de JSON :

Un JSON valide est aussi un YAML valide

En XML, on a les chevrons "<>" pour définir les structures
En JSON, on a des caractères spéciaux () ,{}, [] ...
En YAML, on a les sauts de lignes et les indentations

Donc en JSON et XML tu indentes comme tu veux, pas de problème

EN YAML, ca fait partie de la syntaxe (comme en Python)

Ca sert surtout de fichier de configuration

Passons à la partie la plus intéressante

La syntaxe YAML

Pour t'aider, n'oublie pas d'installer un plugin de validation YML sur ton éditeur

key-value pairs

app: front-ui
port: 9000
version: 2.7

On a une string (que l'on peut mettre entre simple quote, double quote ou pas de quote du tout)
On a des nombres (entier ou décimaux)
La clé est avant les :
La valeur après

comments

On a les commentaires aves le hashtag #

objects

On peut rassembler plusieurs key-value (et autres) au sein d'un objet

microservice:
app: front-ui
port: 9000
version: 2.7

Une indentation et un nom d'object

lists

On peut créer une liste d'objets :

microservices:
- app: front-ui
  port: 9000
  version: 2.7

Attention : l'indentation des attributs de l'objet se fait toujours entre les attributs eux-même pas avec le tiret

boolean

deployed : true / false
tested : yes / no
started : on / off

Les 3 notations sont valides

plus sur les lists

Une liste d'objets

microservices:
- app: front-ui
  port: 9000
  version: 2.7
- app: back
  port: 3000
  version: 2.7

Plus simplement une liste de valeur

steps:
- tests
- build
- deploy

Et on peut inclure des objets/lists dans des objets/lists

steps:
- tests:
  - front-ui
- back
- build
- deploy

Petite subtilité : les tirets peuvent être alignés avec son parent OU indentés
Mais pas alignés avec le tiret du parent
(je te laisse méditer sur cette phrase tranquillement)

Tu peux faire plus concis :

steps:
- tests: [front-ui, back]

Multi-line strings

grandeChaine: |
    ceci est une grande phrase
    qui nécessite plusieurs lignes
    donc comment on fait ?

Tu utilises le Pipe | au début pour dire à YML que ce qui suit est du multiligne


grandeChaine: >
    ceci est une grande phrase
    que je veux mettre sur une seule ligne
    mais que je split dans le yml pour que ca soit
    plus lisible

Avec le chevron, YML va considérer la suite comme une seule ligne et supprimer pour toi les sauts de lignes lors de l'interprétation

Les trucs funky

Tu as d'autres trucs sympa en YML mais plutôt pour une utilisation avancée

Je te laisse trouver de la doc si ca t'intéresse :

  • L'utilisation de variables
  • Les placeholders
  • Les anchors / templates / Alias (avec extensions et overrides)
  • three dashes pour assembler plusieurs fichiers de conf dans un seul

Voilà pour cette introduction à YAML

Maintenant tu sauras les lire en un clin d'oeil

La newsletter pour ne rien louper

Rejoins les 2500 lecteurs de  la newsletter pour obtenir des conseils, des stratégies et des ressources pour développer et monétiser tes compétences Tech.