Les points essentiels à retenir avant d’écrire du YAML
- YAML sert surtout à décrire des données et des configurations lisibles par l’humain.
- L’indentation structure le document: elle doit rester cohérente et se faire sans tabulations.
- Les listes, les objets imbriqués et les valeurs multilignes couvrent la plupart des cas d’usage.
- Il faut mettre entre guillemets les valeurs ambiguës pour éviter les surprises du parseur.
- Le format est très utile pour Docker Compose, GitHub Actions, Ansible, Kubernetes et d’autres outils d’infrastructure.
- Un linter ou une validation de schéma fait gagner du temps dès que le fichier grandit.
Comprendre la structure d’un fichier YAML
Le point de départ est simple: YAML n’est pas un langage de programmation, mais un format de sérialisation pensé pour être lu et modifié à la main. En pratique, il sert à décrire des paires clé-valeur, des listes et des objets imbriqués sans syntaxe lourde. C’est précisément ce qui le rend très populaire dans les projets web et logiciel: on peut le parcourir vite, le versionner facilement et le relire sans effort quand la configuration vieillit.
Je le lis toujours comme une arborescence. Une clé ouvre un niveau, une indentation annonce un sous-niveau, et les tirets introduisent une séquence. Quand cette logique est nette, le fichier reste compréhensible même sans documentation externe.
| Élément | Rôle | Exemple | Ce qu’il faut retenir |
|---|---|---|---|
| Clé-valeur | Associer un nom à une donnée | nom: site-produit |
Base de la plupart des fichiers YAML |
| Liste | Décrire plusieurs éléments dans un ordre précis | - cache |
Le tiret introduit chaque item |
| Objet imbriqué | Regrouper des sous-propriétés | deploy:
region: eu-west |
L’indentation remplace les accolades |
| Bloc multi-ligne | Écrire du texte long |
| ou >
|
Très utile pour descriptions, scripts ou messages |
Une fois cette base en tête, on peut regarder les formats de code les plus utiles dans la vraie vie, là où YAML devient vraiment intéressant.

Des exemples de code YAML qui servent vraiment au quotidien
Quand je montre du YAML à une équipe, je commence rarement par un cas exotique. Je préfère partir de situations qui parlent à tout le monde: configuration d’une application, pipeline de déploiement, orchestration de services. C’est là que l’on comprend rapidement pourquoi le format est apprécié: il reste compact, lisible et suffisamment expressif pour décrire des scénarios concrets.
Une configuration d’application simple
app:
name: mon-site
env: production
port: 3000
features:
- cache
- logs
- metrics
Ce premier exemple montre l’essentiel: une racine app, des propriétés simples, puis une liste de fonctionnalités. Je le trouve utile parce qu’il donne immédiatement le bon réflexe de lecture: une structure hiérarchique, pas une suite de lignes isolées.
Une pipeline CI légère
name: build-and-test
on:
push:
branches:
- main
jobs:
test:
runs-on: ubuntu-latest
steps:
- name: Checkout du code
uses: actions/checkout@v4
- name: Installer les dépendances
run: npm ci
- name: Lancer les tests
run: npm test
Ce type de fichier est typique des projets web modernes. Le YAML y sert à décrire un enchaînement d’actions plutôt qu’une logique métier. Le point important n’est pas seulement la syntaxe: c’est la capacité du fichier à rester lisible quand l’équipe l’ouvre tous les jours pour corriger un build ou ajuster un workflow.
Lire aussi : Développement mobile - Les clés d'une application réussie
Une composition de services locale
services:
web:
image: node:20
ports:
- "3000:3000"
environment:
NODE_ENV: development
db:
image: postgres:16
environment:
POSTGRES_DB: app
POSTGRES_USER: app
POSTGRES_PASSWORD: secret
Ici, YAML décrit plusieurs services avec leurs paramètres. C’est un bon exemple de sa force: on voit d’un coup d’œil quels blocs appartiennent à quel service, sans avoir à décoder une structure trop bavarde. Plus le projet grandit, plus cette clarté devient importante, ce qui m’amène à la manière d’écrire un YAML qui reste propre dans le temps.
Écrire un YAML propre et fiable
La qualité d’un fichier YAML se joue rarement sur une seule ligne spectaculaire. Elle dépend surtout de petites décisions répétées: indentation régulière, noms cohérents, valeurs bien typées et blocs séparés quand il le faut. Dans les projets que je relis, les problèmes viennent plus souvent d’une structure ambiguë que d’une logique incorrecte.
- Utilisez toujours une indentation cohérente, idéalement 2 espaces, et évitez les tabulations.
- Quotez les valeurs ambiguës, surtout si elles ressemblent à un booléen, à un nombre ou à une version.
- Gardez des noms stables et explicites, par exemple
database_urlplutôt quedbsi le contexte n’est pas évident. - Préférez des fichiers courts et découpés par responsabilité quand la configuration devient trop dense.
- Utilisez les commentaires pour expliquer le pourquoi, pas pour répéter ce que le code dit déjà.
Un point qui mérite d’être souligné: le bloc multi-ligne. Je m’en sers souvent pour des descriptions longues, des scripts ou des messages d’erreur personnalisés.
description: |
Ce service expose l’API publique.
Il doit rester compatible avec les clients mobiles.
Toute modification du contrat passe par une revue dédiée.
Le symbole | conserve les retours à la ligne, alors que > les replie souvent en un seul paragraphe. Cette nuance est utile, car elle évite d’écrire du texte fragile ou illisible dans une simple chaîne. Une fois ces bases posées, le vrai risque devient plus clair: ce n’est pas d’écrire du YAML, c’est d’écrire un YAML qui semble juste mais qui casse au parsing.
Les erreurs fréquentes que je vois encore en équipe
La plupart des bugs YAML sont silencieux jusqu’au moment où l’outil refuse de démarrer ou interprète une valeur autrement que prévu. C’est frustrant, parce que le fichier a l’air propre à l’œil nu. Dans la pratique, je vois revenir les mêmes erreurs: indentation incohérente, valeurs non citées, et mélange de structures sans repère visuel.
| Erreur | Symptôme | Réflexe correct |
|---|---|---|
| Tabulations au lieu d’espaces | Le parseur échoue ou lit mal le niveau | Standardiser 2 espaces dans tout le dépôt |
| Valeurs ambiguës non citées |
yes, no, on, off ou 01 peuvent être mal interprétés |
Mettre entre guillemets ce qui pourrait changer de type |
| Deux niveaux visuellement proches | Une clé semble être au bon endroit, mais elle ne l’est pas | Relire l’arborescence ligne par ligne |
| Chaînes avec deux-points | Le texte se découpe de travers | Entourer la valeur de guillemets |
| Fichier trop gros | Le repérage devient lent et les erreurs se multiplient | Fragmenter la configuration en blocs plus petits |
Je conseille aussi de tester chaque modification avec un validateur ou un linter avant de pousser quoi que ce soit. Ce n’est pas du confort, c’est une assurance contre les erreurs d’indentation et les incohérences de type qui coûtent du temps à toute l’équipe. Et puisqu’un YAML ne vit jamais seul, il faut aussi savoir quand ce format est le bon choix, et quand un autre format sera plus net.
Choisir le bon format entre YAML, JSON et TOML
J’ai souvent vu des équipes choisir YAML par habitude, alors qu’un autre format aurait été plus simple à maintenir. Le bon choix dépend de la nature du fichier, de la fréquence des modifications humaines et du niveau de rigidité attendu. Pour des configurations éditées à la main, YAML est très confortable; pour des échanges machine à machine très stricts, JSON garde souvent l’avantage; pour certaines configurations légères, TOML peut être plus lisible.
| Format | Atout principal | Limite fréquente | Usage courant |
|---|---|---|---|
| YAML | Lisible et compact | Indépendant de l’indentation et parfois ambigu | CI/CD, infrastructure, configuration applicative |
| JSON | Très explicite et bien supporté | Moins agréable à relire à la main | APIs, échanges de données, systèmes stricts |
| TOML | Syntaxe simple pour la configuration | Moins répandu dans certains outils DevOps | Paramétrage d’outils, projets où la clarté prime |
Dans mes projets, je garde une règle assez simple: si le fichier doit être lu et modifié souvent par des humains, YAML a du sens; s’il doit être validé de manière stricte et échangé entre systèmes, JSON est souvent plus sûr. Ce tri évite de tordre le format pour un usage qui ne lui correspond pas, et il prépare surtout le terrain pour une pratique plus saine au quotidien.
Les réflexes qui rendent un YAML maintenable sur la durée
Le meilleur YAML n’est pas celui qui impressionne à la première lecture. C’est celui qu’on comprend encore six mois plus tard, après plusieurs évolutions de produit et quelques changements d’équipe. Pour obtenir ce résultat, je garde quelques réflexes simples: nommer clairement les sections, limiter la profondeur des imbrications, séparer les responsabilités et valider systématiquement le fichier avant livraison.
- Je préfère des blocs courts à un document unique qui mélange tout.
- Je garde la même convention de noms dans tout le dépôt.
- Je documente les choix qui ne sont pas évidents pour un nouveau contributeur.
- Je teste la configuration dans l’environnement cible quand c’est possible, pas seulement dans l’éditeur.
- Je fais attention aux valeurs implicites, car un petit raccourci peut créer un bug discret.
En pratique, c’est cette discipline qui transforme un simple fichier de configuration en outil fiable pour l’équipe. Si vous retenez une seule chose, gardez celle-ci: le YAML est puissant quand il reste simple, explicite et cohérent avec l’usage réel du projet.
