Introduction au YAML
Dec 02, 2022Salut,
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.