Qu’est-ce que le YAML ?
Découvrir IBM watsonx™ Code Assistant pour Red Hat Ansible Lightspeed Réserver une démo live
Collègues regardant du code sur l’écran d’un ordinateur

Publication : 11 décembre 2023
Contributeurs : Gita Jackson, Michael Goodwin

Qu’est-ce que le YAML ?

YAML est un langage de sérialisation des données polyvalent et lisible par l’homme, souvent utilisé pour coder des fichiers de configuration.

Il s’agit d’un format normalisé permettant de représenter des données structurées de manière à ce qu’elles soient facilement compréhensibles par les humains et interprétables par les machines. « YAML » est l’acronyme de « YAML Ain’t Markup Language » ou « Yet Another Markup Language ». Le premier vise à souligner que le langage est destiné aux données plutôt qu’aux documents.

À la base, YAML est conçu dans un souci de simplicité et de lisibilité. Il utilise une syntaxe claire et minimaliste, s’appuyant sur l’indentation, les paires clé-valeur et des conventions intuitives. Cette approche permet aux développeurs et aux utilisateurs d’exprimer des structures de données complexes dans un format qui ressemble au langage naturel et qui est facile à comprendre.

L’accent mis sur la lisibilité humaine rend YAML particulièrement bien adapté à diverses applications, y compris les fichiers de configuration (config) et l’échange de données entre différents systèmes. Sa structure simple et intuitive améliore son utilisation dans différents domaines, permettant aux utilisateurs de définir et d’organiser les données d’une manière claire et compréhensible. YAML prend en charge les caractères Unicode, ce qui permet de représenter un large éventail de caractères et de symboles provenant de différents langages et de différents jeux de caractères. Un YAML valide donne lieu à une spécification sans erreur de syntaxe.

L’adaptabilité de YAML en fait un choix polyvalent dans un large éventail d’applications. De la gestion de la configuration à l’échange et à l’automatisation des données, la facilité d’utilisation de YAML couvre divers domaines, offrant des moyens accessibles et structurés de représenter et de gérer les données.

Demander une démonstration

Le moment est venu d’améliorer votre automatisation grâce à la puissance de l’IA générative. Planifiez une démonstration personnalisée de 30 minutes avec l’un de nos experts pour voir IBM watsonx Code Assistant pour Red Hat Ansible Lightspeed en action.

Contenu connexe

Abonnez-vous à la newsletter IBM

Syntaxe et attributs YAML

La syntaxe YAML comporte différents attributs et éléments clés. Il est essentiel de comprendre la structure, les types de données et les conventions utilisées dans les fichiers YAML pour garantir une représentation efficace des données et une bonne lisibilité.

Mappage (dictionnaire)

En YAML, les dictionnaires sont représentés sous forme de mappages. Il s’agit d’un ensemble de paires clé-valeur où chaque clé est associée à une valeur. Cette structure de données ressemble au concept de dictionnaires ou de cartes trouvés dans différents langages de programmation. 

Indentation

La syntaxe YAML repose fortement sur l’indentation et le nombre d’espaces pour représenter la structure des données. Les espaces, et non les caractères de tabulation, interdits en YAML, sont utilisés pour indiquer la hiérarchie et l’imbrication. Étant donné que YAML repose sur l’indentation pour la structure, la cohérence du document YAML est importante.

Les nouvelles lignes représentent des sauts de ligne ou la fin d’une ligne au format YAML utilisé pour séparer différents éléments.

Guillemets

Pour la plupart des scalaires en YAML, les guillemets ne sont pas nécessaires. Cependant, des guillemets peuvent servir à éviter toute confusion dans certains scénarios, comme autour d’une chaîne de texte qui contient des caractères spéciaux et susceptibles d’être confondus avec la syntaxe YAML. Ou si vous avez une chaîne qui se compose uniquement de « true » que vous ne souhaitez pas convertir en booléen, par exemple. Dans de tels cas, des guillemets simples ou doubles peuvent être utilisés, en fonction des données et de ce qui doit être exprimé.

Paires clé-valeur

YAML utilise un format de paire clé-valeur simple séparé par deux points pour la représentation des associations de données.  

Par exemple :

métier : enseignant

Séquences (tableaux)

Les séquences (tableaux ou listes dans d’autres langages) vous permettent de définir une liste d’éléments en YAML. L’indentation sépare une séquence du parent et chaque élément de liste commence par un tiret (-) suivi d’un espace. Tous les éléments de la séquence doivent être indentés de la même manière.

Par exemple :

fruits :
    - pomme
    - orange
    - poire

Les séquences peuvent également être représentées dans une séquence de flux à l’aide de crochets et de virgules.1

fruits : [pomme, orange, poire]

Types de données

YAML prend en charge différents types de données tels que les chaînes, les nombres entiers, les nombres flottants, les booléens et les valeurs nulles. Ces types de données offrent une certaine flexibilité dans la représentation de différents types d’informations.

Commentaires

YAML prend en charge les commentaires signalés par le symbole #. Les commentaires permettent d’ajouter des explications, des notes ou du contexte dans les fichiers YAML.

Chaînes multi-lignes

YAML prend en charge les chaînes multi-lignes, permettant au texte de s’étendre sur plusieurs lignes sans nécessiter de sauts de ligne explicites. Les chaînes multi-lignes servent à inclure des blocs de texte dans les documents YAML.

Fichiers YAML

Les fichiers YAML utilisent généralement des extensions comme .yaml ou .yml. Les conventions de dénomination et de structuration des fichiers YAML garantissent la cohérence et la bonne interprétation des données. Les fichiers YAML peuvent également être lus en Perl, Ruby et Python.

YAML, JSON et XML

YAML et JSON présentent des similitudes dans la représentation des données, mais YAML se distingue par sa lisibilité, son expressivité et sa prise en charge de structures de données complexes. YAML est un sur-ensemble de JSON, ce qui signifie qu’il contient toutes les fonctionnalités de JSON en plus de fonctionnalités et de commandes étendues.

JSON (JavaScript Object Notation) utilise une syntaxe plus explicite avec des accolades {}, des crochets [] et des virgules. Bien que concise et largement utilisée, la syntaxe de JSON peut devenir moins lisible, en particulier dans les grands ensembles de données. La prise en charge par JSON des structures de données est relativement limitée, principalement en ce qui concerne les tableaux, les objets et les valeurs scalaires.

JSON est souvent privilégié pour sa compatibilité croisée pour l’échange de données dans les applications Web et les API, tandis que YAML est plus couramment utilisé dans les scénarios où la lisibilité humaine et les structures de données plus complexes sont requises, comme les fichiers de configuration et certains types de documentation et d’échange de données.2

Par rapport au XML, YAML offre une alternative plus concise et plus conviviale, mettant l’accent sur la simplicité et la facilité de compréhension dans la représentation et l’échange de données. YAML et XML présentent des différences fondamentales en termes de syntaxe et d’objectif.

XML est hautement structuré, s’appuie sur des balises d’ouverture et de fermeture explicites, ce qui le rend légèrement déroutant. En revanche, YAML utilise une structure plus simple et plus proche du langage naturel, axée sur la lisibilité grâce à l’indentation et aux paires clé-valeur sans balises de fermeture explicites.

Cas d’utilisation de YAML

YAML peut être utilisé avec tous les langages de programmation et est souvent utilisé pour les fichiers de configuration, ainsi que pour l’échange de données et la documentation. Son format lisible par l’homme améliore la clarté de la documentation.

YAML et DevOps

YAML joue un rôle central dans DevOps et joue un rôle déterminant dans l’automatisation, l’orchestration et la gestion de la configuration. Dans le cadre des pratiques DevOps, les fichiers YAML servent de schémas directeurs pour définir des séquences d’actions et des configurations dans un format facilement compréhensible. Ces fichiers sont utilisés pour décrire précisément les étapes et les procédures requises pour l’automatisation, ce qui permet une représentation claire et concise des workflows complexes.

Infrastructure en tant que code (IaC)

YAML est utilisé pour définir l’infrastructure en tant que code, c’est-à-dire l’utilisation de code, plutôt que de processus manuels, pour définir et gérer l’infrastructure informatique. IaC permet une configuration d’infrastructure informatique plus efficace et plus cohérente. YAML peut être utilisé pour définir la configuration souhaitée de l’infrastructure comme les machines virtuelles, les réseaux et le stockage et pour décrire la relation entre les composants de l’infrastructure informatique.

Déploiements

YAML est utilisé pour créer des fichiers de déploiement pour les applications qui spécifient les configurations, dépendances, limites de ressources et autres informations importantes pour un déploiement et des performances efficaces des applications. Les fichiers YAML permettent de réduire les erreurs de déploiement et d’augmenter la vitesse de livraison des applications grâce au contrôle et à l’automatisation des versions.

Configuration du pipeline CI/CD

YAML peut jouer un rôle important dans les pipelines d’intégration et de livraison continues (CI/CD), un workflow DevOps agile important. À l’instar de la configuration et des déploiements d’infrastructure, les fichiers YAML sont utilisés pour définir les étapes et les cibles du pipeline et, en fin de compte, pour automatiser le processus CI/CD.

Outils YAML et DevOps

De nombreux outils et programmes utilisés par les équipes DevOps tirent parti de YAML, notamment :

Ansible

Ansible est un logiciel d’automatisation open source qui utilise des fichiers au format YAML, appelés protocoles, pour définir des tâches et des procédures d’automatisation. ​​Les modèles YAML permettent aux utilisateurs de programmer l’automatisation de tâches répétitives sans connaissance d’un langage de programmation avancé.3

Grâce à IBM watsonx™ Code Assistant pour Red Hat Ansible Lightspeed, les utilisateurs peuvent écrire une tâche en anglais clair et recevoir des recommandations de code YAML pour les tâches d’automatisation. Ces recommandations de code sont utilisées pour créer des protocoles Ansible.3

Kubernetes

Kubernetes est une plateforme d’orchestration de conteneurs open source utilisée pour automatiser le déploiement, la mise à l’échelle et la gestion des applications conteneurisées. Kubernetes fonctionne sur la base de « états », essayant d’atteindre l’état souhaité à partir d’un état actuel en fonction d’instructions spécifiques. Les fichiers YAML peuvent être utilisés pour créer des ressources Kubernetes telles que des pods, des objets et des déploiements, ainsi que pour spécifier et communiquer l’état souhaité des objets Kubernetes.

GitHub

GitHub, une plateforme Web pour le contrôle des versions et la collaboration dans le développement logiciel, intègre YAML pour définir les workflows. Les configurations basées sur YAML dans les référentiels GitHub permettent la configuration de workflows automatisés pour une intégration continue et une gestion de projet.

docker compose

Docker Compose est un outil permettant de définir et d’exécuter des applications Docker multi-conteneurs.4  Les fichiers YAML sont utilisés dans Docker Compose pour configurer les services d’une application.

Partage de données multilingues

YAML est indépendant du langage, ce qui le rend idéal pour le partage de données multilingues. Une fois qu’un fichier YAML est défini, il peut être exécuté dans d’autres langages tels que Python ou Ruby.

Fichiers journaux

Les fichiers journaux sont des fichiers de données textuelles générés par ordinateur qui contiennent des informations sur les opérations et les modèles au sein des applications, des systèmes, des serveurs et d’autres ressources ou périphériques informatiques. Ils sont utilisés pour évaluer la performance des ressources et jouer un rôle crucial dans l’observabilité du système. En raison de sa simplicité, YAML est utilisé pour créer des fichiers journaux intuitifs et propres.

Avantages de YAML

YAML est devenu un langage de sérialisation des données populaire pour plusieurs raisons, notamment sa simplicité, sa compatibilité et son utilité dans la création de fichiers de configuration.

Simplicité

La syntaxe de YAML ressemble à des structures en langage naturel. Sa simplicité et sa conception minimaliste le rendent facilement compréhensible à la fois pour les développeurs et les utilisateurs non techniques, améliorant ainsi la compréhension et réduisant les erreurs.

Utiliser pour les fichiers de configuration

YAML est bien adapté aux fichiers de configuration en raison de son format structuré et lisible. Il simplifie le processus de définition des configurations en utilisant des indentations et des paires clé-valeur, ce qui le rend gérable et adaptable à diverses applications logicielles.

Compatibilité

La nature indépendante de la plateforme de YAML garantit la compatibilité entre les différents systèmes et langages de programmation, facilitant ainsi l’échange de données transparent et l’interopérabilité entre les différentes plateformes et environnements.

Outils pour le traitement YAML

PyYAML est une bibliothèque Python bien visible utilisée pour analyser et utiliser des fichiers YAML dans des applications basées sur Python. Elle fournit des méthodes de chargement des données YAML dans des objets Python. PyYAML permet la conversion de fichiers YAML en structures de données pratiques dans les applications Python et vice versa.5

Des outils comme PyYAML et d’autres analyseurs et validateurs YAML, comme yamllint et YAML Validator, jouent un rôle important dans la préservation de la précision, de la validité et de l’intégrité des fichiers YAML. Leur fonction principale consiste à valider la syntaxe YAML, à identifier les erreurs et à assurer la cohérence au sein des documents YAML. 

Solutions connexes
IBM watsonx Code Assistant pour Red Hat Ansible Lightspeed

IBM watsonx Code Assistant pour Red Hat Ansible Lightspeed démystifie le processus de création de protocoles Ansible grâce à des recommandations de contenu alimentées par l’IA générative. Conçu spécialement pour accélérer l’automatisation informatique, le produit fournit des recommandations de contenu d’automatisation pour une meilleure expérience Ansible.

Découvrir watsonx Code Assistant pour Red Hat Ansible Lightspeed Réserver une démo live

IBM watsonx Code Assistant

IBM watsonx Code Assistant s’appuie sur l’IA générative pour accélérer le développement tout en maintenant les principes de confiance, de sécurité et de conformité. Les développeurs et les opérateurs informatiques peuvent accélérer les efforts de modernisation des applications et générer une automatisation pour faire évoluer rapidement les environnements informatiques.

Découvrir IBM watsonx Code Assistant

Passez à l’étape suivante

Prêt à faire progresser votre automatisation, alimentée par l’IA générative ? Découvrez ce que watsonx Code Assistant pour Red Hat Ansible Lightspeed peut faire lorsque vous planifiez une démonstration en direct ou discutez avec l’un de nos experts.

Découvrir watsonx Code Assistant pour Red Hat Ansible Lightspeed Réserver une démo live
Notes de bas de page

1 « How to represent arrays in YAML » (lien externe à ibm.com), Tarun Telang, Educative, Inc., 2023

2 « What’s the difference between YAML and JSON » (lien externe à ibm.com), Amazon Web Services, 2023

« What is YAML » (lien externe à ibm.com), Redhat.com, 3 mars 2023

4 « Docker Compose overview » (lien externe à ibm.com), Docker.com, 2023 

5 « Python YAML | Guide to Handing YAML Files » (lien externe à ibm.com), Gabriel Ramuglia, 11 septembre 2023