Account Connexion
Jump to section

YAML, qu'est-ce que c'est ?

Copier l'URL

YAML est un langage de sérialisation des données qui est souvent utilisé pour coder des fichiers de configuration. Pour certains, YAML est l'acronyme de Yet Another Markup Language, pour d'autres, c'est l'acronyme récursif de YAML Ain't Markup Language (YAML n'est pas un langage de balisage), ce qui souligne que le langage YAML s'utilise pour représenter des données plutôt que des documents. 

YAML est un langage de programmation fréquemment utilisé, car il est parfaitement lisible et compréhensible par l'homme. Il peut également être utilisé en association avec d'autres langages de programmation. En raison de sa flexibilité et de son accessibilité, YAML est utilisé par l'outil d'automatisation Ansible pour créer des processus d'automatisation, sous la forme de playbooks Ansible.

YAML comporte des fonctions issues de Perl, C, XML, HTML et d'autres langages de programmation. Comme il s'agit également d'un surensemble du langage JSON, les fichiers JSON sont des fichiers YAML valides.

YAML utilise une indentation de style Python pour marquer l'imbrication. Les caractères de tabulation n'étant pas autorisés, on utilise des espaces blancs. Les symboles de formatage habituels, tels que les accolades, les crochets, les balises d'ouverture et de fermeture ou les guillemets, n'existent pas. Les fichiers YAML portent l'extension .yml ou .yaml. 

Un fichier YAML est structuré sous la forme d'un mappage ou d'une liste.

Les mappages permettent d'associer des paires clé-valeur. Chaque clé doit être unique, et l'ordre importe peu. Cela ressemble à un dictionnaire Python ou à une affectation de variable dans un script bash.

En YAML, un mappage doit être résolu avant de pouvoir être fermé et d'en créer un nouveau. Il est possible d'établir un nouveau mappage en augmentant le niveau d'indentation, ou en résolvant le précédent et en ouvrant un mappage adjacent. 

Une liste répertorie des valeurs dans un ordre donné et peut contenir un grand nombre d'éléments nécessaires. Une séquence de liste commence par un tiret (-) et une espace, et est séparée du parent par une indentation. C'est un peu comme une liste en Python ou un tableau en bash ou en Perl. Une liste peut être intégrée dans un mappage. 

YAML comporte également des scalaires, qui sont des données arbitraires (codées en Unicode) pouvant être utilisées comme valeurs, telles que des chaînes, des entiers, des dates, des nombres ou des booléens.

Lors de la création d'un fichier YAML, il faut respecter ces règles de syntaxe et vérifier que le fichier est valide. Il existe des outils qui vérifient la syntaxe d'un fichier, les lints. La commande yamllint permet de s'assurer que le fichier YAML créé est valide avant de pouvoir le transférer vers une application.

Pour illustrer ces règles de syntaxe, voici un exemple de fichier YAML simple qui représente les données de la fiche d'un salarié.

 --- # Fiche salarié name: Martin Développeur job: Développeur skill: Élite employed: True foods: - Pomme - Orange - Fraise - Mangue languages: perl: Élite python: Élite pascal: Bases education: | 4 GCSE 3 A-Levels BSc en Internet des objets 

Le langage YAML est principalement utilisé pour créer des fichiers de configuration. Il est recommandé de coder les fichiers de configuration en YAML plutôt qu'en JSON, car même si ces langages peuvent être utilisés de manière interchangeable dans la plupart des cas, YAML reste plus facile à lire et à utiliser.  

En plus de son utilisation dans Ansible, YAML sert pour les ressources et les déploiements Kubernetes. 

L'un des avantages du langage YAML est que les fichiers YAML peuvent être ajoutés au système de contrôle du code source, tel que GitHub, afin que les modifications puissent être suivies et vérifiées. 

YAML dans Ansible

Les playbooks Ansible servent à orchestrer des processus informatiques. Un playbook est un fichier YAML qui contient un ou plusieurs plays (jeux de tâches) et qui permet de définir l'état souhaité d'un système. 

Chaque play peut exécuter une ou plusieurs tâches, et chaque tâche invoque un module Ansible. Ces modules accomplissent les tâches d'automatisation dans Ansible, dans n'importe quel langage capable de renvoyer une réponse au format JSON, notamment Ruby, Python ou bash.

Un playbook Ansible se compose de mappages et de listes. Pour créer un playbook, il faut commencer par une liste YAML qui désigne le play puis répertorie les tâches dans un ordre précis. N'oubliez pas que l'indentation n'est pas une indication de l'héritage logique. Considérez que chaque ligne correspond à un type de données YAML (une liste ou un mappage).

En s'appuyant sur des modèles YAML, les utilisateurs d'Ansible peuvent automatiser des tâches répétitives sans avoir à apprendre un langage de programmation avancé.

YAML pour Kubernetes

Kubernetes fonctionne sur la base d'un état défini et d'un état réel. Les objets Kubernetes représentent l'état d'un cluster. Ils indiquent à Kubernetes ce à quoi vous voulez que la charge de travail ressemble. Il est possible de créer des ressources Kubernetes, telles que des pods, des objets et des déploiements, à l'aide de fichiers YAML. 

Lors de la création d'un objet Kubernetes, il faut ajouter des spécifications pour définir l'état souhaité de l'objet. L'API Kubernetes peut être utilisée pour créer l'objet. La requête adressée à l'API comprendra les spécifications de l'objet en JSON, mais le plus souvent, il faudra fournir les informations requises à l'outil kubectl sous la forme d'un fichier YAML. kubectl se chargera de convertir le fichier en YAML lorsqu'il interrogera l'API.

Une fois qu'un objet a été créé et défini, Kubernetes veille à ce qu'il soit toujours présent. 

Les développeurs ou administrateurs système spécifient l'état défini à l'aide des fichiers YAML ou JSON qu'ils soumettent à l'API Kubernetes. Kubernetes utilise un contrôleur pour comparer le nouvel état défini et l'état réel du cluster.

Parce qu'elle utilise le langage d'automatisation YAML facilement lisible par l'homme, la solution Red Hat Ansible Automation Platform permet aux utilisateurs d'une entreprise de partager, corriger et gérer facilement les contenus d'automatisation.

Elle comprend tous les outils nécessaires à la mise en œuvre de l'automatisation à l'échelle de l'entreprise, notamment des playbooks et des outils d'analyse. Elle permet aussi aux utilisateurs de centraliser et contrôler leur infrastructure informatique au moyen d'un tableau de bord visuel, du contrôle d'accès basé sur les rôles et de nombreuses autres fonctions, avec à la clé une réduction de la complexité opérationnelle.

Red Hat OpenShift est une plateforme Kubernetes conçue pour les entreprises. Elle inclut de nombreuses technologies supplémentaires qui font de Kubernetes un outil puissant et viable pour les entreprises, notamment : les registres, la mise en réseau, la télémétrie, la sécurité, l'automatisation et les services.

Avec Red Hat OpenShift, les développeurs peuvent créer des applications conteneurisées, les héberger et les déployer dans le cloud rapidement et facilement grâce à de bons niveaux d'évolutivité, de contrôle et d'orchestration.

En savoir plus sur l'automatisation

Produits

Red Hat Consulting

Contrats avec des conseillers stratégiques qui prennent en considération tous les tenants et les aboutissants de votre entreprise, analysent les défis auxquels vous êtes confrontés et vous aident à les relever avec des solutions complètes et économiques.

Red Hat Ansible Automation Platform

Plateforme pour la mise en œuvre de l'automatisation à l'échelle de l'entreprise, quelle que soit votre situation.

Red Hat Process Automation

Plateforme de développement d'applications cloud-native qui automatise les décisions et processus métier.

Ressources

Formations

Cours gratuit

L'essentiel d'Ansible : automatiser en toute simplicité – Présentation technique

Cours gratuit

Red Hat Ansible Automation pour SAP

Illustration - mail

Ce type de contenu vous intéresse ?

Inscrivez-vous à notre newsletter Red Hat Shares.