RunToolz iconRunToolz
Welcome to RunToolz!
YAMLConfigurationDevOps

YAML : Fichiers de configuration sans l'encombrement

Pourquoi YAML est devenu le standard pour les fichiers de config et comment éviter ses pièges.

RunToolz Team16 janvier 20263 min read

Chaque manifeste Kubernetes. Chaque workflow GitHub Actions. Chaque fichier Docker Compose.

YAML est partout pour la configuration. C'est lisible, c'est flexible, et ça a quelques bizarreries surprenantes.

Pourquoi YAML ?

JSON est strict : guillemets doubles, pas de commentaires, pas de virgules finales.

YAML est indulgent : syntaxe minimale, commentaires autorisés, lisible par l'humain.

# Configuration YAML
database:
  host: localhost
  port: 5432
  name: myapp
{
  "database": {
    "host": "localhost",
    "port": 5432,
    "name": "myapp"
  }
}

Mêmes données, moins de bruit en YAML.

Envie d'essayer par vous-même ?Convertir YAML vers JSON

Les bases

Paires clé-valeur :

name: John
age: 30

Structures imbriquées (utilise des espaces, pas des tabulations) :

person:
  name: John
  age: 30

Listes :

colors:
  - red
  - green
  - blue

Listes et objets inline :

colors: [red, green, blue]
person: {name: John, age: 30}

Le problème de la Norvège

country: NO

Qu'est-ce que NO ? Un booléen false. YAML interprète NO, Yes, on, off et d'autres comme des booléens.

Le code pays de la Norvège devient false. Ta configuration casse de façons mystérieuses.

Solution : Mets entre guillemets les chaînes qui pourraient être interprétées comme booléens.

country: "NO"

Le problème des chaînes multi-lignes

description: This is a long
  description that continues

Est-ce deux lignes ou une avec "that continues" indenté ? Dépend de l'analyseur YAML.

Multi-lignes explicites :

# Littéral (préserve les nouvelles lignes)
description: |
  Line one
  Line two

# Plié (joint les lignes)
description: >
  This is one long
  line when parsed

L'indentation est significative

Deux espaces. Pas de tabulations. Pas un espace. Pas trois.

# Correct
parent:
  child: value

# Faux - caractère tabulation
parent:
	child: value

Mélanger tabulations et espaces casse YAML silencieusement. Configure ton éditeur pour utiliser des espaces.

Interprétation des nombres

version: 1.10

Est-ce la chaîne "1.10" ou le nombre 1.1 ? La plupart des analyseurs l'interprètent comme 1.1.

Les maths à virgule flottante frappent à nouveau. Mets les numéros de version entre guillemets.

version: "1.10"

Ancres et alias

YAML peut référencer du contenu répété :

defaults: &defaults
  timeout: 30
  retries: 3

production:
  <<: *defaults
  timeout: 60

Puissant pour réduire la duplication. Confus quand exagéré.

Valider YAML

La flexibilité de YAML signifie que beaucoup de choses qui ont l'air valides ne le sont pas.

  • Utilise un linter dans ton éditeur
  • Valide contre un schéma quand possible
  • Convertis en JSON pour voir ce que l'analyseur a réellement interprété

Si ta config ne fonctionne pas, vérifie ce que l'analyseur voit, pas ce que tu as écrit.

YAML vs JSON vs TOML

YAML : Lisible par l'humain, beaucoup de fonctionnalités, cas limites bizarres.

JSON : Strict, simple, largement supporté, verbeux.

TOML : Explicite, moins de surprises, gagne en popularité pour les configs.

Pour les données machine-à-machine, JSON est plus sûr. Pour les configs éditées par l'humain, YAML fonctionne si tu connais les pièges.


YAML privilégie la lisibilité sur la rigueur. Ce compromis crée des cas limites. Mets entre guillemets les chaînes qui ressemblent à des booléens ou nombres, utilise une syntaxe multi-lignes explicite, et valide avant le déploiement.