YAML

YAML (acronyme récursif de « YAML Ain’t Markup Language ») est un langage de sérialisation de données conçu pour être facilement lisible et écrit par des humains. Il est principalement utilisé pour écrire des fichiers de configuration dans de nombreux domaines : applications web, déploiements (Docker, Kubernetes), pipelines d’intégration continue (CI/CD), ou encore définition de données structurées.

Ses caractéristiques principales :

  • Structure par indentation : La hiérarchie des données est représentée par l’espacement (espaces ou tabulations) en début de ligne, comme un plan ou une liste à puces.
  • Pas de balises ni d’accolades : Contrairement à XML, HTML ou JSON, YAML évite la syntaxe lourde et utilise des deux-points : et des tirets - pour organiser l’information.
  • Types de données natifs : Il supporte les chaînes de caractères, les nombres, les booléens (true/false), les listes, les dictionnaires (clé-valeur) et même les dates.
  • Extensibilité : Permet d’inclure des commentaires (avec #), des références à d’autres parties du fichier (ancres & et alias *), et même des blocs de texte multilignes.

Analogie

Comme une fiche de recette de cuisine très structurée :

  • Les ingrédients sont listés avec des tirets (comme une liste à puces).
  • Les étapes sont numérotées par indentation : plus on s’enfonce vers la droite, plus on entre dans le détail.
  • On peut ajouter des notes (commentaires) en marge sans perturber la lecture.
  • Tout est écrit en français clair : on comprend immédiatement ce qu’il faut faire, sans avoir à décoder des symboles compliqués.

Par exemple, une recette en YAML ressemblerait à :

yaml

recette:
nom: "Gâteau au chocolat"
temps: 45 min
ingrédients:
- farine: 200g
- chocolat: 100g
étapes:
- mélanger les ingrédients secs
- faire fondre le chocolat

Comparaison avec d’autres formats

CritèreYAMLJSONXML
Lisibilité humaine⭐⭐⭐⭐⭐ (excellente)⭐⭐⭐ (bonne)⭐⭐ (lourd)
Poids du fichierLégerTrès légerLourd (balises)
CommentairesOui (#)NonOui (<!-- -->)
Structures complexesOui (ancres, alias)NonOui (schémas)
Utilisation typiqueConfigurations, DevOpsAPIs, échange de donnéesDocuments structurés, SOAP
Langages supportésTous les langages modernesTousTous

Exemple concret

Voici un fichier YAML typique pour configurer une application web :

yaml

# Configuration de l'application
app:
  nom: "MonSite"
  version: 2.1.0

# Paramètres de la base de données
database:
  hôte: "localhost"
  port: 5432
  utilisateur: "admin"
  mot_de_passe: "secret123"

# Liste des fonctionnalités activées
fonctionnalités:
  - authentification
  - paiement_en_ligne
  - notifications

# Environnements de déploiement
environnements:
  développement:
    url: "http://localhost:3000"
    debug: true
  production:
    url: "https://monsite.com"
    debug: false

YAML dans l’écosystème actuel

YAML est devenu incontournable dans les environnements modernes :

  • DevOps & Cloud : Docker Compose, Kubernetes, Ansible, Terraform
  • CI/CD : GitHub Actions, GitLab CI, CircleCI
  • Applications web : Configuration de frameworks (Symfony, Rails, Spring)
  • Documentation technique : Fichiers de spécification OpenAPI (Swagger)

Pièges à éviter

  1. L’indentation doit être cohérente : utilisez toujours 2 ou 4 espaces (jamais de tabulations, qui sont interdites par la spécification).
  2. Attention au type des valeurs : "true" est une chaîne, true est un booléen.
  3. Les fichiers long peuvent devenir difficiles à lire à cause de l’indentation profonde (préférez les découper en plusieurs fichiers).

À retenir

YAML est un format qui a été pensé pour les humains avant les machines : on peut comprendre une configuration complexe en un coup d’œil, sans avoir à décoder une syntaxe alambiquée. C’est le couteau suisse des fichiers de configuration modernes.

Site officiel

Validateur Yaml

Noyaml.com

Les contenus de définition restent publics. Les ressources (outils, grilles, supports) liées à cette fiche sont disponibles dans l’espace membre.

Plus de publications