DevToolBoxFREE
BlogAdvertise

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.

Cet article vous a-t-il aidé ?

Stay Updated

Get weekly dev tips and new tool announcements.

No spam. Unsubscribe anytime.

Partner Picks

Sponsor this article

Place your product next to this developer topic with tracked clicks.

Ask about article sponsorship

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.

This site uses cookies for analytics and to display ads. By continuing to browse, you agree. Privacy Policy