Syntaxe
Règles de base
IndentationEspaces uniquement (pas de tabulations), profondeur cohérente
#Commentaire (jusqu'à la fin de la ligne)
---Marqueur de début de document
...Marqueur de fin de document
Sensible à la casseLes clés et valeurs distinguent majuscules et minuscules
Exemple minimal
--- name: Alice age: 30 active: true
Scalaires
Types de scalaires
helloChaîne (sans guillemets)
"hello"Chaîne (guillemets doubles, permet les échappements)
'hello'Chaîne (guillemets simples, littérale)
42 / 3.14Nombre (entier / décimal)
true / falseBooléen
null / ~Valeur nulle
2026-03-26Date (ISO 8601)
Règles de guillemets
plain: aucun guillemet nécessaire special: "les deux-points : et le dièse # nécessitent des guillemets" escape: "nouvelle\nligne" literal: 'pas de \n d''échappement ici'
Séquences
Séquence en bloc
fruits: - apple - banana - cherry
Séquence de flux (en ligne)
colors: [red, green, blue] matrix: [[1, 2], [3, 4]]
Séquence d'objets
users: - name: Alice role: admin - name: Bob role: user
Mappages
Mappage en bloc
server: host: localhost port: 8080 debug: false
Mappage de flux (en ligne)
point: {x: 10, y: 20}
Clés complexes
? [first, second] : "valeur de clé composée"
Ancres et alias
Définir et réutiliser
defaults: &defaults timeout: 30 retries: 3 production: <<: *defaults timeout: 60
Référence
&nameDéfinir une ancre
*nameRéférencer (alias) une ancre
<<Clé de fusion — fusionner un mappage dans l'actuel
Chaînes multi-lignes
Scalaires en bloc
| (littéral)Préserve les sauts de ligne exactement
> (replié)Replie les sauts de ligne en espaces
|+ (conserver)Littéral, conserver les sauts de ligne finaux
|- (supprimer)Littéral, supprimer les sauts de ligne finaux
>- (replier+supprimer)Replié, supprimer les sauts de ligne finaux
Bloc littéral
script: | echo "line one" echo "line two"
Bloc replié
description: > Ce long texte sera replié en une seule ligne avec des espaces.
Balises
Balises de type
!!str 42Forcer la valeur en chaîne "42"
!!int "42"Forcer la valeur en entier 42
!!float 1Forcer la valeur en décimal 1.0
!!bool "true"Forcer la valeur en booléen
!!null ""Forcer la valeur en nul
!!binaryDonnées binaires encodées en Base64
Exemple de balise
port: !!str 8080 enabled: !!bool "yes" version: !!float 3
Modèles courants
Docker Compose
services: web: image: nginx:alpine ports: ["80:80"] environment: NODE_ENV: production
GitHub Actions
on: [push, pull_request] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4
Conseils
yamllintValider YAML pour la syntaxe et le style
yqProcesseur YAML en ligne de commande (comme jq)
Éviter NorwayNO est false booléen — mettre les codes pays entre guillemets
Éviter !!pythonNe jamais charger du YAML non fiable avec des chargeurs non sécurisés