Analyseur YAML

YAML (YAML Ain't Markup Language) est un format de sérialisation de données lisible par l'homme, populaire pour les fichiers de configuration. Cet outil analyse le YAML avec prise en charge complète de la spécification 1.2, y compris les ancres, alias et flux multi-documents, puis affiche le résultat dans une vue arborescente interactive.

Specifications

Cas d'utilisation courants

  • Analyser et valider les manifestes Kubernetes (Deployments, Services, ConfigMaps)
  • Lire les fichiers Docker Compose et docker-compose.yml
  • Déboguer les workflows GitHub Actions, GitLab CI ou CircleCI
  • Convertir les playbooks Ansible en JSON pour un traitement programmatique
  • Valider les fichiers de valeurs de charts Helm

Fonctionnalites

  • Prise en charge complète de la spécification YAML 1.2
  • Gérer les ancres (&) et alias (*) pour le contenu réutilisable
  • Analyser les flux multi-documents (séparateurs ---)
  • Convertir en JSON, TOML ou XML
  • Validation de syntaxe avec messages d'erreur spécifiques à la ligne
  • Vue arborescente interactive pour les structures imbriquées

Exemples

Déploiement Kubernetes

Essayer →

Un manifeste de déploiement Kubernetes définissant un pod nginx répliqué.

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx

Docker Compose

Essayer →

Un fichier Docker Compose définissant des services web et base de données.

version: '3.8'
services:
  web:
    image: nginx:alpine
    ports:
      - "80:80"
  db:
    image: postgres:15
    environment:
      POSTGRES_PASSWORD: secret

Conseils

  • YAML est sensible à l'indentation. Utilisez des espaces, pas des tabulations.
  • Les chaînes ne nécessitent pas de guillemets sauf si elles contiennent des caractères spéciaux.
  • Utilisez les ancres (&nom) et alias (*nom) pour éviter de répéter du contenu.
  • Les chaînes multi-lignes peuvent utiliser | (littéral) ou > (plié) comme scalaires de bloc.

Comprendre Analyseur YAML

YAML (YAML Ain't Markup Language) est un format de sérialisation de données lisible par l'homme largement utilisé dans le DevOps, l'infrastructure cloud et la configuration d'applications. Sa syntaxe basée sur l'indentation élimine le bruit visuel des crochets et accolades, en faisant le format préféré pour les outils d'infrastructure-as-code, les pipelines CI/CD et l'orchestration de conteneurs.

La force principale de YAML est la lisibilité. Un manifeste de déploiement Kubernetes, un workflow GitHub Actions ou un fichier Docker Compose en YAML peut être compris d'un coup d'oeil. Le format prend en charge les scalaires (chaînes, nombres, booléens, null, dates), les séquences (tableaux) et les mappages (paires clé-valeur). Les chaînes ne nécessitent généralement pas de guillemets, le contenu multi-ligne peut utiliser des blocs littéraux (|) ou pliés (>), et les ancres (&) avec les alias (*) permettent de définir une valeur une fois et de la référencer plusieurs fois, réduisant la répétition dans les grands fichiers de configuration.

YAML 1.2, la spécification actuelle, est un sur-ensemble strict de JSON : tout document JSON valide est aussi du YAML valide. Cela signifie que vous pouvez mélanger la syntaxe YAML et JSON dans le même fichier. Le support multi-documents via le séparateur --- permet d'intégrer plusieurs documents indépendants dans un seul fichier, ce qui est courant dans les manifestes Kubernetes et les templates Helm.

Le principal piège de YAML est sa sensibilité aux espaces. Les tabulations ne sont pas autorisées pour l'indentation (uniquement les espaces), et une clé mal alignée peut silencieusement modifier la structure du document. Le "problème de la Norvège" — où des valeurs non entre guillemets comme "no", "yes", "on" et "off" sont interprétées comme des booléens — est une autre source notoire de bugs. YAML 1.2 a corrigé certains de ces problèmes, mais de nombreux analyseurs utilisent encore les règles YAML 1.1 par défaut.

YAML 1.1 définit un large ensemble de littéraux booléens incluant yes/no, on/off, true/false et leurs variantes en majuscules. Un code pays comme NO est analysé comme le booléen false, et la chaîne "on" devient true — le fameux "problème de la Norvège". YAML 1.2 restreint les booléens à seulement true et false, mais de nombreux analyseurs populaires (dont PyYAML) utilisent encore les règles YAML 1.1 par défaut. La correction sûre est de toujours mettre entre guillemets les chaînes qui pourraient être mal interprétées. Les tabulations sont aussi strictement interdites pour l'indentation ; seuls les espaces sont autorisés, et une tabulation dans l'indentation provoquera une erreur d'analyse. Deux espaces par niveau est la convention la plus courante.

YAML fournit deux styles de scalaires de bloc pour les chaînes multi-lignes. Le scalaire de bloc littéral (|) préserve les sauts de ligne exactement tels qu'écrits, ce qui le rend idéal pour les scripts embarqués ou les requêtes SQL. Le scalaire de bloc plié (>) joint les lignes consécutives avec des espaces, ce qui fonctionne bien pour les longues descriptions ou les paragraphes. Les deux styles prennent en charge des modificateurs : |- et >- suppriment le saut de ligne final, tandis que |+ et >+ préservent tous les sauts de ligne finaux.

Les ancres et alias sont le mécanisme de YAML pour réutiliser du contenu. Une ancre (&nom) marque un noeud pour référence ultérieure, et un alias (*nom) insère ce noeud ailleurs dans le document. Combiné avec la clé de fusion (<<: *defauts), ce pattern permet de définir des paramètres partagés une fois et de les fusionner dans plusieurs mappages. C'est particulièrement utile dans les configurations CI/CD où de nombreuses tâches partagent des variables d'environnement, des règles de cache ou des étapes de déploiement communes.

← Retour a tous les outils