YAML 101
Introduction à YAML
1 Qu’est-ce que YAML ?
YAML (YAML Ain’t Markup Language) est un format de sérialisation de données lisible par l’homme, conçu pour être facile à lire et à écrire.
Il est souvent utilisé pour la configuration des fichiers, le stockage de données, et les échanges de données entre langages de programmation.
2 Pourquoi utiliser YAML ?
- Lisibilité
- YAML est conçu pour être lisible par l’homme. La syntaxe est simple et directe, sans beaucoup de ponctuations.
- Les indentations permettent une structure claire et hiérarchisée, semblable à celle des langages de programmation comme Python.
- Flexibilité
- YAML supporte des structures de données complexes comme les listes imbriquées et les dictionnaires.
- Il permet des alias et des ancres pour éviter la duplication de données, ce qui peut être utile pour des fichiers de configuration réutilisables.
- Compatibilité avec les autres formats
- YAML peut facilement être converti en JSON, et vice versa
- Usage dans DevOps
- YAML est largement utilisé dans les outils de gestion de configuration, les pipelines CI/CD, et les orchestrateurs de conteneurs
3 Syntaxe
Voici quelques exemples de syntaxe avec son équivalent json
3.1 Attributs
yaml
person:
name: Alice # str
city: "Amiens" # str
age: 30 # int
height: 1.75 # float
student: false # bool
birth_date: 1994-05-15 # date
json
{
"person": {
"name": "Alice",
"age": 30,
"height": 1.75,
"student": false,
"birth_date": "1994-05-15"
}
}
3.2 Liste de valeurs
Plusieurs possibilités pour déclarer des listes
yaml
hobbies:
- chess
- hiking
- landart
--- # ou
hobbies: ["chess", "hiking", "landart"]
json
{
"hobbies": [
"chess",
"hiking",
"landart"
]
}
Autre exemple
yaml
servers:
- name: server1
ip: 192.168.1.1
- name: server2
ip: 192.168.1.2
- {name: "server3", ip: 192.168.1.3}
json
{
"servers": [
{"name": "server1", "ip": "192.168.1.1"},
{"name": "server2", "ip": "192.168.1.2"},
{"name": "server3", "ip": "192.168.1.3"}
]
}
3.3 Ancre et alias
yaml
parent: &pere Bob
child:
- name: Eva
papa: *pere
- name: Laury
papa: *pere
json
{
"parent": "Bob",
"child": [
{"name": "Eva", "parent": "Bob"},
{"name": "Laury", "parent": "Bob"}
]
}
3.4 Héritage
yaml
default: &default_settings
timeout: 30
retries: 5
server1:
<<: *default_settings
name: server1
server2:
<<: *default_settings
name: server2
retries: 3
json
{
"default": {
"timeout": 30,
"retries": 5
},
"server1": {
"timeout": 30,
"retries": 5,
"name": "server1"
},
"server2": {
"timeout": 30,
"retries": 3,
"name": "server2"
}
}
3.5 Long texte
yaml
# En conservant les retours à la ligne
fable: |
Maître Corbeau, sur un arbre perché,
Tenait en son bec un fromage.
Maître Renard, par l'odeur alléché,
Lui tint à peu près ce langage :
"Hé ! bonjour, Monsieur du Corbeau.
Que vous êtes joli ! que vous me semblez beau !
Sans mentir, si votre ramage
Se rapporte à votre plumage,
Vous êtes le Phénix des hôtes de ces bois."
À ces mots le Corbeau ne se sent pas de joie ;
Et pour montrer sa belle voix,
Il ouvre un large bec, laisse tomber sa proie.
Le Renard s'en saisit, et dit : "Mon bon Monsieur,
Apprenez que tout flatteur
Vit aux dépens de celui qui l'écoute :
Cette leçon vaut bien un fromage, sans doute."
Le Corbeau honteux et confus
Jura, mais un peu tard, qu'on ne l'y prendrait plus.
# En supprimant les retours à la ligne
choixpeau: >
Les nouveaux élèves de Poudlard sont répartis en quatre maisons : Gryffondor
pour les courageux, Poufsouffle pour les travailleurs, Serdaigle pour les
intelligents, Serpentard pour les ambitieux. Le Choixpeau magique, qui
s'occupe de la répartition, hésite sur la meilleure maison pour Harry.
Comme Harry a entendu dire que les mages noirs venaient tous de Serpentard,
il demande à aller ailleurs, et le Choixpeau l'envoie à Gryffondor, avec
Ron et Hermione. Albus Dumbledore, le directeur, prévient les élèves qu’ils
ne doivent pas aller dans la Forêt interdite, ni dans le couloir du deuxième étage.
a