YAML 101

Introduction à YAML
Author

Ludovic Deneuville

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