Qu'est-ce que le format de fichier YML ?
.yml est un fichier texte brut et un format d'échange de données. C'est un format standardisé et indépendant de la plateforme qui stocke les données sous forme de texte lisible par l'homme, organisé via une structure clé: valeur basée sur l'indentation. Les fichiers .yml peuvent être lus et écrits à l'aide de bibliothèques YAML disponibles pour pratiquement tous les principaux langages de programmation. .yml et .yaml identifient le même format - .yml est la forme plus ancienne à trois lettres conservée par de nombreux outils tels que docker-compose.yml, .gitlab-ci.yml et les workflows GitHub Actions. Le format est le plus couramment utilisé pour la sérialisation de données et la configuration d'applications.
La sérialisation est un terme utilisé en informatique qui fait référence au concept d'échange de données entre programmes ou applications à l'aide d'objets bien définis. Un objet peut être compris comme un conteneur de données. Par exemple, les enregistrements de base de données sont une forme de sérialisation de données car ils peuvent être facilement échangés entre diverses bases de données. Les données sérialisées peuvent également prendre la forme de fichiers structurés qui peuvent être envoyés entre applications. Parmi les formats de sérialisation les plus utilisés figurent .yml, XML, JSON et TOML.
Une caractéristique distinctive du .yml est son utilisation d'espaces blancs significatifs : l'indentation définit la structure du document, et seuls les espaces sont autorisés - les tabulations sont explicitement interdites par la spécification. Les documents peuvent éventuellement s'ouvrir avec --- (début de document) et se fermer avec .... YAML prend également en charge les commentaires en ligne #, les scalaires de bloc multi-lignes utilisant | ou >, et les ancres (&) avec des alias (*) pour réutiliser des valeurs répétées.
Sécurité et sûreté
RISQUE : MEDIUMUn fichier .yml est du texte brut et ne s'exécute pas tout seul, donc sa lecture est sûre. Deux risques réels : (1) le YAML de configuration (pipelines CI, Compose, K8s, Ansible) contient fréquemment des secrets - jetons, mots de passe, clés - ne le collez donc pas dans des validateurs en ligne non fiables et ne le publiez pas publiquement. (2) Danger programmatique : charger du YAML non fiable avec un analyseur non sécurisé (par exemple, yaml.load de PyYAML au lieu de yaml.safe_load) peut exécuter des objets ou du code arbitraires - utilisez toujours le chargeur sécurisé pour les fichiers auxquels vous ne faites pas confiance. Risque d'édition : une tabulation ou un espace mal aligné change silencieusement la signification, validez donc après édition.
Détails du format
en bref- Strangereal IFL camera-map (rare) - Quelques applications héritées ont réutilisé .yml pour des données non-YAML, mais aujourd'hui l'extension est pratiquement toujours du texte YAML.
Programmes qui ouvrent les fichiers YML
Détails techniques
spécifications approfondies| Type MIME | application/yaml (enregistré auprès de l'IANA) ; les variantes héritées incluent text/yaml, text/x-yaml, application/x-yaml |
| Encodage | UTF-8 (par défaut et le plus courant) ; UTF-16 et UTF-32 avec BOM sont autorisés par la spécification mais rarement utilisés en pratique |
| Structure du fichier | Mappages basés sur l'indentation (clé: valeur), séquences (- élément) et scalaires ; l'imbrication est exprimée uniquement par le niveau d'indentation |
| Espaces blancs significatifs | L'indentation définit la structure ; seuls les espaces sont autorisés - les tabulations sont explicitement interdites par la spécification YAML |
| Marqueurs de document | Le marqueur optionnel --- indique le début du document ; ... indique la fin du document ; un seul fichier .yml peut contenir plusieurs documents YAML séparés par --- |
| Support des commentaires | Commentaires en ligne et sur toute la ligne introduits par # - absents de JSON et de la plupart des formats de sérialisation binaires |
| Types de données natifs | Chaîne, entier, flottant, booléen, null, horodatage et binaire (encodé en base64 via la balise !!binary) |
| Ancres et alias | & déclare une ancre réutilisable ; * y fait référence (alias) - élimine la répétition par copier-coller dans les fichiers de configuration complexes |
| Scalaires de bloc | | (scalaire de bloc littéral) préserve les sauts de ligne tels quels ; > (scalaire de bloc replié) transforme les sauts de ligne en espaces |
| Superset de JSON | Depuis YAML 1.2 (2009), tout fichier JSON valide est également un fichier YAML valide, de sorte que les analyseurs YAML peuvent lire le JSON nativement |
| Octets magiques / signature | Aucun - pas d'en-tête binaire ou de nombre magique ; identifié par sa structure clé: valeur basée sur l'indentation et l'extension .yml ou .yaml |
| Taille de fichier (typique) | De quelques octets à des dizaines de Ko pour les fichiers de configuration et de pipeline CI/CD ; dépasse rarement quelques centaines de Ko |
| Équivalence d'extension | .yml et .yaml sont identiques en format ; .yml est la forme à trois lettres de l'ère DOS adoptée par docker-compose.yml, .gitlab-ci.yml et GitHub Actions |
| Directive de version de spécification | Le pragma optionnel %YAML 1.2 au début du fichier déclare la version de la spécification ; la plupart des fichiers l'omettent et s'appuient sur les valeurs par défaut de l'analyseur |
| Publié | 2001 (YAML 1.0); YAML 1.1 (2005); current YAML 1.2 (2009, revised 1.2.2 in 2021) |
| Dernière version | YAML 1.2.2 (2021) |
| Standard ouvert | Oui · libre de droits |
| Spécification | yaml.org |
Conversions YML
Q&R de la communauté
posées par les utilisateursPas encore de questions - soyez le premier à poser une question sur les fichiers YML.