Tutoriel de Syntaxe YAML : Une Introduction Pratique
YAML (YAML Ain't Markup Language) est un format de sérialisation de données lisible par l'humain largement utilisé dans les fichiers de configuration, les pipelines CI/CD et l'infrastructure-as-code. Si vous travaillez avec Docker Compose, Kubernetes, GitHub Actions ou Ansible, vous utilisez déjà YAML quotidiennement. Ce tutoriel couvre tout ce dont vous avez besoin pour écrire du YAML avec confiance.
Pourquoi YAML ?
L'avantage principal de YAML est la lisibilité. Comparez les mêmes données en JSON et YAML :
JSON :
{
"server": {
"host": "localhost",
"port": 8080,
"debug": true,
"allowed_origins": ["http://localhost:3000", "https://example.com"]
}
}
YAML :
server:
host: localhost
port: 8080
debug: true
allowed_origins:
- http://localhost:3000
- https://example.com
YAML atteint la même structure avec moins de ponctuation. Pas d'accolades, pas de crochets pour les cas simples, pas de guillemets obligatoires. Cela rend les fichiers de configuration plus faciles à lire et à modifier manuellement.
Types de Données de Base
Scalaires
YAML infère automatiquement les types à partir des valeurs :
string: hello world # String (no quotes needed)
quoted: "hello world" # Explicit string
integer: 42 # Integer
float: 3.14 # Float
boolean: true # Boolean (true/false, yes/no, on/off)
null_value: null # Null (also ~ or empty)
date: 2025-01-15 # Date (ISO 8601)
Piège courant : Les valeurs comme yes, no, on, off sont interprétées comme des booléens. Si vous voulez la chaîne "yes", mettez-la entre guillemets : "yes".
Chaînes et Guillemets
Les chaînes ont rarement besoin de guillemets, mais certains cas l'exigent :
plain: This is a plain string
single: 'Preserves \n as literal backslash-n'
double: "Interprets \n as newline"
colon: "value: with colon needs quotes"
hash: "value # with hash needs quotes"
Chaînes Multilignes
YAML a deux styles multilignes :
Bloc littéral (|) — préserve les retours à la ligne :
description: |
This is line one.
This is line two.
This is line four (after blank line).
Bloc replié (>) — joint les lignes avec des espaces :
description: >
This is a long paragraph
that will be folded into
a single line.
Ajoutez - pour supprimer les retours à la ligne finaux (|-, >-) ou + pour les conserver (|+, >+).
Collections
Listes (Séquences)
# Block style
fruits:
- apple
- banana
- cherry
# Flow style (inline)
fruits: [apple, banana, cherry]
Maps (Mappings)
# Block style
person:
name: Alice
age: 30
city: London
# Flow style
person: {name: Alice, age: 30, city: London}
Structures Imbriquées
departments:
- name: Engineering
lead: Alice
members:
- Bob
- Charlie
- name: Design
lead: Diana
members:
- Eve
Ancres et Alias
Les ancres (&) et les alias (*) vous permettent de réutiliser des valeurs :
defaults: &defaults
adapter: postgres
host: localhost
port: 5432
development:
database: dev_db
<<: *defaults
production:
database: prod_db
<<: *defaults
host: db.example.com # Override the default
La clé de fusion << incorpore toutes les propriétés de l'ancre. Les propriétés définies après la fusion remplacent les valeurs ancrées. En savoir plus sur les patrons d'ancres avancés dans notre guide des ancres et alias YAML.
Documents Multiples
Un seul fichier YAML peut contenir plusieurs documents séparés par --- :
---
# Document 1: Config
apiVersion: v1
kind: ConfigMap
---
# Document 2: Service
apiVersion: v1
kind: Service
Ceci est couramment utilisé dans les manifestes Kubernetes.
Pièges Courants
1. Erreurs d'Indentation
YAML utilise des espaces, jamais des tabulations. L'indentation incohérente est l'erreur la plus courante :
# WRONG - mixed indentation
server:
host: localhost
port: 8080 # Error: unexpected indentation
# CORRECT
server:
host: localhost
port: 8080
Utilisez notre Formateur YAML pour corriger automatiquement les problèmes d'indentation.
2. Le Problème de la Norvège
Les codes pays comme NO (Norvège) sont interprétés comme le booléen false :
# WRONG
countries:
- NO # Interpreted as false!
- SE
- DK
# CORRECT
countries:
- "NO"
- SE
- DK
3. Caractères Spéciaux sans Guillemets
Les deux-points, dièses et crochets dans les valeurs nécessitent des guillemets :
# WRONG
message: Error: file not found
url: http://example.com # Might break
# CORRECT
message: "Error: file not found"
url: "http://example.com"
4. Piège des Numéros de Version
Les numéros de version comme 1.0 sont parsés comme des flottants :
# WRONG
version: 1.0 # Becomes 1 (float)
# CORRECT
version: "1.0" # String
Valider le YAML
Validez toujours votre YAML avant de déployer. Les erreurs de syntaxe dans le YAML peuvent causer des échecs cryptiques dans les applications. Notre Validateur YAML vérifie la syntaxe instantanément, en mettant en surbrillance la ligne et la colonne exactes de toute erreur.
Pour une exploration plus approfondie des différences entre YAML et JSON, consultez notre comparaison YAML vs JSON.
FAQ
Combien d'espaces dois-je utiliser pour l'indentation YAML ?
Deux espaces est la convention la plus courante, utilisée par Kubernetes, Docker Compose, GitHub Actions et la plupart des outils DevOps. Certains projets utilisent quatre espaces. La règle clé est la cohérence au sein d'un fichier — ne mélangez jamais les niveaux d'indentation.
YAML supporte-t-il les commentaires ?
Oui, YAML supporte les commentaires sur une seule ligne avec #. Il n'y a pas de syntaxe de commentaire multiligne. Les commentaires sont supprimés lors du parsing et ne sont pas disponibles dans la structure de données chargée.
Ressources Connexes
- Formateur YAML — Formatez et embellissez les fichiers YAML
- YAML vs JSON — Quand utiliser quel format
- YAML pour Docker Compose — Patrons YAML spécifiques à Docker