DevToolBoxGRATUIT
Blog

Syntaxe YAML et validation : Erreurs courantes et solutions

9 min de lecturepar DevToolBox

YAML est le format de configuration incontournable pour Docker, Kubernetes et les pipelines CI/CD. Malgré sa syntaxe lisible, il est étonnamment facile de se tromper.

Où YAML est utilisé

  • Docker Compose
  • Manifestes Kubernetes
  • GitHub Actions / GitLab CI
  • Playbooks Ansible
  • Fichiers de configuration

Règles de syntaxe de base

Indentation

YAML utilise des espaces (jamais de tabulations) :

# ✅ Correct (2-space indentation)
server:
  host: localhost
  port: 8080
  database:
    name: myapp
    pool: 10

# ❌ Wrong (tab characters or inconsistent spaces)
server:
	host: localhost    # Tab character - INVALID!
   port: 8080        # 3 spaces - inconsistent!

Paires clé-valeur

Séparées par deux-points et espace :

# ✅ Correct
name: John Doe
port: 8080

# ❌ Wrong - missing space after colon
name:John Doe

Chaînes multi-lignes

YAML offre deux styles de scalaires bloc :

# | (literal block) - preserves newlines
description: |
  This is line one.
  This is line two.
  Each newline is preserved.

# > (folded block) - folds newlines to spaces
description: >
  This is a long paragraph
  that will be joined into
  a single line.

Types de données

TypeSyntaxeExemple
Stringplain, "quoted", 'quoted'name: John
Integer42, 0xFF, 0o77port: 8080
Float3.14, .inf, .nanpi: 3.14159
Booleantrue/falsedebug: true
Nullnull, ~, (empty)value: null
DateYYYY-MM-DDdate: 2026-02-10

Le "problème norvégien"

En YAML 1.1, `NO` est interprété comme `false`. Mettez les codes pays entre guillemets :

# ❌ YAML 1.1 interprets these as booleans!
country: NO        # → false
answer: yes        # → true
switch: on         # → true

# ✅ Fix: quote the values
country: "NO"      # → string "NO"
answer: "yes"      # → string "yes"
switch: "on"       # → string "on"

Collections

# List (sequence)
fruits:
  - apple
  - banana
  - cherry

# Nested map
database:
  host: localhost
  port: 5432
  credentials:
    user: admin
    password: secret

# Inline / Flow style
fruits: [apple, banana, cherry]
point: {x: 10, y: 20}

Top 10 des erreurs YAML

#ErreurCauseSolution
1Erreur de tabulationTabulations pour l'indentationRemplacer par des espaces
2Indentation incohérenteMélange 2 et 4 espacesUtiliser une indentation cohérente
3Espace manquant après deux-points`key:value`Ajouter un espace après `:`
4Caractères spéciaux non quotésValeurs avec : ou # sans guillemetsMettre entre guillemets
5Coercition booléenneyes/no interprétés comme booléensMettre entre guillemets
6Chaînes avec deux-pointsURLs cassées au 2e deux-pointsQuoter la valeur entière
7Clés dupliquéesMême clé deux foisSupprimer les doublons
8Espaces en fin de ligneEspaces invisiblesConfigurer l'éditeur
9Indentation de liste erronéeItems non alignésAligner les `-`
10Séparateur de document manquantDocuments multiples sans `---`Ajouter `---`

YAML vs JSON vs TOML

FonctionnalitéYAMLJSONTOML
Comments# supportNone# support
Multi-line strings| and >\\n only""" triple quotes
Data typesRich (dates, etc.)Basic (6 types)Rich (dates, etc.)
ReadabilityHighMediumHigh
Machine parsingComplexSimpleMedium
Best forConfig filesAPIs, data exchangeApp config

Bonnes pratiques

  • Utiliser un linter YAML en CI/CD
  • Afficher les espaces dans l'éditeur
  • Utiliser 2 espaces
  • Quoter les chaînes ambiguës
  • Utiliser la validation de schéma
  • Garder les fichiers petits

FAQ

Peut-on utiliser des tabulations en YAML ?

Non. YAML interdit strictement les tabulations pour l'indentation.

Différence entre guillemets simples et doubles ?

Simples : chaîne littérale. Doubles : séquences d'échappement autorisées.

Comment représenter null ?

Utilisez `null`, `~`, ou laissez la valeur vide.

Pourquoi YAML traite "NO" comme false ?

YAML 1.1 traite yes/no comme booléens. YAML 1.2 ne reconnaît que true/false.

𝕏 Twitterin LinkedIn
Cet article vous a-t-il aidé ?

Restez informé

Recevez des astuces dev et les nouveaux outils chaque semaine.

Pas de spam. Désabonnez-vous à tout moment.

Essayez ces outils associés

YMLYAML Validator & FormatterY{}JSON ↔ YAML ConverterTYTOML ↔ YAML🐳Docker Compose Generator

Articles connexes

JSON vers Dart : Guide complet des classes modèles Flutter

Apprenez à convertir du JSON en classes Dart pour Flutter. fromJson, toJson, null safety et json_serializable.

Validation YAML Docker Compose : 10 erreurs de syntaxe courantes et comment les corriger

Arrêtez de perdre du temps avec les erreurs YAML Docker Compose. Apprenez à identifier et corriger les 10 erreurs les plus courantes.

Validation JSON Schema : Types, outils et bonnes pratiques

Tout sur la validation JSON Schema : des types de base aux patterns avancés, bibliothèques de validation et intégration avec TypeScript et les API.

Guide Convertisseur JSON-YAML en Ligne : Syntaxe, Outils et Bonnes Pratiques

Guide complet de conversion JSON-YAML. Syntaxe, js-yaml, PyYAML, yq CLI, Kubernetes, Docker Compose, pieges YAML et securite.