¿Qué es el formato de archivo YAML?
.yaml es un formato de archivo de texto utilizado para intercambiar datos entre diversas aplicaciones. YAML - acrónimo de *YAML Ain't Markup Language* - es un estándar para organizar información en un formato legible por humanos e independiente de la plataforma, utilizando pares key: value basados en sangría y codificados en UTF-8. El análisis de archivos .yaml requiere la instalación de una biblioteca YAML; las bibliotecas populares incluyen PyYAML (Python), js-yaml (JavaScript) y SnakeYAML (Java). Los archivos .yaml a veces se guardan con la extensión .yml, que es funcionalmente idéntica. Más allá del intercambio de datos, los archivos .yaml se utilizan habitualmente para serializar datos y para escribir archivos de configuración en herramientas como Docker Compose, Kubernetes y GitHub Actions.
Serialización
La serialización es un término utilizado en informática. Es el proceso de traducir datos u objetos a un formato que pueda ser almacenado, transmitido y reconstruido posteriormente. Por ejemplo, dos instituciones que intercambian datos en un formato estandarizado utilizando diferentes aplicaciones deben serializar esos datos antes de enviarlos. Los datos serializados también pueden almacenarse en un archivo - .yaml, .xml, .json, .toml, etc. - y luego enviarse a los destinatarios.
Un documento .yaml puede comenzar opcionalmente con el marcador de inicio de documento --- y terminar con ...; esto también permite múltiples documentos dentro de un solo archivo. Desde YAML 1.2 (2009, revisado en 2021), cada archivo JSON válido es también un YAML válido.
Seguridad y protección
RIESGO: MEDIUMUn archivo YAML es texto plano y no se ejecuta por sí solo, por lo que leerlo es seguro. Dos riesgos reales: (1) los YAML de configuración (flujos de CI, Compose, K8s, Ansible) frecuentemente contienen secretos - tokens, contraseñas, claves - así que no los pegue en validadores en línea no confiables ni los publique en repositorios. (2) Peligro programático: cargar YAML no confiable con un analizador inseguro (por ejemplo, yaml.load de PyYAML en lugar de yaml.safe_load) puede ejecutar objetos o código arbitrario - use siempre el cargador seguro para archivos en los que no confíe. Riesgo de edición: un tabulador o un espacio mal alineado cambia silenciosamente el significado, así que valide después de editar.
Detalles del formato
en pocas palabrasProgramas que abren archivos YAML
Detalles técnicos
especificación profunda| Extensión de archivo | .yaml (también .yml) |
| Tipo MIME | application/yaml |
| Codificación | Texto plano UTF-8; sin encabezado binario ni magic bytes |
| Estructura | Pares clave: valor basados en sangría; la sangría usa solo espacios - los tabuladores están prohibidos por la especificación |
| Marcadores de documento | --- marca el inicio del documento, ... marca el fin del documento; pueden coexistir múltiples documentos en un archivo |
| Tipos de datos nativos | Cadenas, enteros, flotantes, booleanos, nulos, secuencias (listas), mapeos (diccionarios), marcas de tiempo |
| Versión de la especificación | YAML 1.2 (2009, revisada en 2021); reemplaza a YAML 1.1 (2005) y YAML 1.0 (2001) |
| Compatibilidad con JSON | Desde YAML 1.2, cada documento JSON válido es también un YAML válido - JSON es un subconjunto estricto |
| Comentarios | Comentarios de una sola línea introducidos por # ; pueden aparecer en su propia línea o en línea después de un valor |
| Cadenas multilínea | El escalar de bloque literal (|) preserva los saltos de línea; el escalar plegado (>) convierte los saltos de línea en espacios |
| Anclas y alias | & define un ancla con nombre y * hace referencia (alias) a ella, permitiendo la reutilización de valores sin duplicación |
| Desarrolladores | Clark Evans, Ingy döt Net, Oren Ben-Kiki |
| Casos de uso comunes | Archivos de configuración (Kubernetes, Docker Compose, GitHub Actions, Ansible), serialización de datos, definiciones de OpenAPI |
| Comillas | Se admiten cadenas sin comillas, con comillas simples ('...') y con comillas dobles ("..."); las comillas dobles permiten secuencias de escape |
| Lanzado | 2001 (YAML 1.0); YAML 1.1 (2005); current YAML 1.2 (2009, revised 2021) |
| Estándar abierto | Sí · libre de regalías |
| Especificación | yaml.org |