Aller au contenu principal

Le langage YAML

Le YAML, acronyme de "YAML Ain't Markup Language", est un langage de sérialisation de données qui a gagné en popularité ces dernières années dans le monde de la programmation et du développement informatique. À première vue, il peut sembler similaire à d'autres formats de données tels que JSON ou XML, mais le YAML se distingue par sa simplicité et sa lisibilité.

Le YAML a vu le jour au début des années 2000 et a depuis évolué pour devenir un standard dans le domaine du développement logiciel. Ses origines remontent aux besoins de simplification de la configuration et de la gestion de données dans des projets informatiques.

Le YAML se distingue par sa syntaxe plus concise et sa lisibilité accrue. Contrairement à JSON qui utilise des accolades et des guillemets, ou à XML qui utilise des balises, le YAML utilise une indentation et des espaces pour structurer les données, ce qui le rend plus accessible aux humains.

Structure de base du YAML

Le YAML utilise une structure de données basée sur l'indentation et les espaces. Voici quelques éléments clés de sa structure de base :

Indentation et espaces

L'indentation est utilisée pour définir la hiérarchie des données. Les niveaux d'indentation sont créés en ajoutant des espaces (généralement 2 ou 4 espaces) en début de ligne. Les données de niveau supérieur sont indentées de zéro espaces, tandis que les données imbriquées sont indentées de manière à refléter leur relation parent-enfant.

Commentaires

Le YAML prend en charge les commentaires, qui sont précédés du symbole "#" et servent à documenter ou à expliquer les données. Les commentaires sont ignorés lors de la lecture du fichier YAML et ne sont là que pour la compréhension humaine.

Types de données pris en charge

Le YAML prend en charge une variété de types de données, notamment :

  • Chaînes de caractères
  • Nombres
  • Listes (séquences)
  • Dictionnaires (associations)
  • Null (représenté par "~")

Exemples de syntaxe YAML

Pour mieux comprendre la syntaxe du YAML, voici quelques exemples concrets :

# Exemple de chaîne de caractères
nom: ROBERT
prenom: Stéphane

# Exemple de nombre
age: 55

# Exemple de liste (séquence)
fruits:
  - pomme
  - banane
  - orange

# Exemple de dictionnaire (association)
personne:
  nom: Toto
  age: 12

Ces exemples montrent comment le YAML peut être utilisé pour représenter des données simples de manière lisible. Dans les sections suivantes de ce guide, nous explorerons plus en détail l'utilisation du YAML pour la configuration de logiciels, le stockage de données et bien plus encore.

Les bonnes pratiques en YAML

L'utilisation du YAML peut sembler simple à première vue, mais pour garantir une gestion efficace des données et des configurations, il est essentiel de suivre certaines bonnes pratiques.

Syntaxe correcte du YAML

La syntaxe correcte du YAML est cruciale pour éviter des erreurs potentielles lors de la lecture ou de l'écriture de fichiers YAML. Voici quelques bonnes pratiques à suivre :

  • Indentation cohérente : Utilisez la même quantité d'espaces pour l'indentation dans tout le fichier YAML (généralement 2 ou 4 espaces).

  • Utilisez des espaces, pas de tabulations : Évitez d'utiliser des tabulations pour l'indentation, car cela peut provoquer des problèmes de compatibilité entre les éditeurs.

  • Indentation correcte des structures de données : Assurez-vous que les données imbriquées sont correctement indentées pour refléter leur relation parent-enfant.

  • Utilisez des guillemets pour les chaînes avec des caractères spéciaux : Si une chaîne contient des caractères spéciaux, tels que des deux-points (:), des tirets (-), ou des crochets ([ ]), il est recommandé d'encadrer la chaîne de guillemets simples ou doubles.

Validation du YAML

La validation du YAML est une étape importante pour s'assurer que vos fichiers YAML respectent la syntaxe attendue. Voici quelques outils et bibliothèques couramment utilisés pour valider les fichiers YAML :

  • yamllint : Cet outil en ligne de commande permet de vérifier la syntaxe d'un fichier YAML et de signaler les erreurs éventuelles.

  • Bibliothèques de validation YAML : De nombreuses langues de programmation, telles que Python (avec PyYAML), proposent des bibliothèques de validation YAML pour garantir la conformité de vos fichiers YAML.

Utilisation avancée du YAML

Jusqu'à présent, nous avons exploré les bases du YAML et les bonnes pratiques pour sa manipulation. Dans cette partie, nous plongerons plus profondément dans l'utilisation avancée du YAML, en explorant des concepts tels que les structures de données complexes, les références et les ancres, ainsi que certaines fonctionnalités avancées.

Utilisation de structures de données complexes

Le YAML permet de représenter des structures de données complexes en utilisant des listes (séquences) et des dictionnaires (associations) imbriqués. Voici un exemple de YAML avec une structure de données complexe :

personnes:
  - nom: Alice
    age: 25
  - nom: Bob
    age: 30

Dans cet exemple, nous avons une liste de personnes, chaque personne étant représentée comme un dictionnaire avec des attributs tels que le nom et l'âge. L'utilisation de structures de données complexes rend le YAML flexible et adapté à la représentation de données hiérarchiques.

Références et ancres

Le YAML prend en charge les références et les ancres, ce qui permet de réutiliser des morceaux de données YAML à plusieurs endroits dans le même fichier. Voici comment cela fonctionne :

employe: &identifiant
  nom: Alice
  poste: Ingénieur

equipe:
  - <<: *identifiant
    nom: Bob
  - <<: *identifiant
    nom: Carol

Dans cet exemple, nous avons défini un employé avec l'identifiant "identifiant", puis nous l'avons réutilisé dans la liste "équipe". Cela permet d'économiser de l'espace et de maintenir la cohérence des données.

Compléments YAML

Le YAML offre plusieurs fonctionnalités avancées qui peuvent simplifier la représentation des données. Parmi elles, citons :

  • Flux de données : Vous pouvez utiliser le caractère "&" pour créer une ancre et le caractère "*" pour faire référence à cette ancre. Cela facilite la réutilisation de données.

  • Tagging : Vous pouvez utiliser des tags pour spécifier le type d'un élément de données, ce qui peut être utile lors de la désérialisation du YAML.

  • Directive de format : Vous pouvez spécifier une directive de format pour influencer le traitement des données, par exemple, en définissant la largeur d'une colonne dans une table.

L'utilisation de ces fonctionnalités avancées dépendra des besoins spécifiques de votre projet, mais elles offrent une flexibilité supplémentaire pour représenter des données complexes de manière efficace.

Utilisation du YAML

Maintenant que nous avons exploré les bases, les bonnes pratiques et les aspects avancés du YAML, il est temps de voir comment ce langage de sérialisation de données est utilisé dans le monde réel, dans une variété de domaines et d'applications. Le YAML a trouvé sa place dans de nombreux scénarios, grâce à sa simplicité et à sa lisibilité.

On retrouve le YAML sur :

  • Kubernetes : Kubernetes, le système d'orchestration de conteneurs populaire, utilise massivement le YAML pour définir les ressources, les déploiements et les services.

  • Ansible : Ansible, un outil d'automatisation, utilise le YAML pour décrire les états souhaités des systèmes et les tâches d'automatisation.

---
- hosts: localhost
  tasks:
    - name: Install EPEL repo.
    ansible.builtin.package:
      name: epel-release
      state: present
    - name: Install htop (available in epel repo)
    yum:
      name: htop
      state: present
...
  • Docker Compose : Docker Compose utilise le YAML pour définir la configuration de conteneurs multi-service.

  • Gitlab CI/CD : Gitlab utilise le YAML pour définir les pipelines CI/CD.

En conclusion, le YAML est un outil polyvalent qui a trouvé sa place dans de nombreux domaines, des environnements de développement aux opérations système en passant par l'automatisation et l'intégration continue.

Plus d'infos

Sites

Ambiant-IT Wikipedia