¿Qué es el formato de archivo YML?
.yml es un archivo de texto plano y un formato de intercambio de datos. Es un formato estandarizado e independiente de la plataforma que almacena datos como texto legible por humanos, organizado a través de una estructura key: value basada en la sangría. Los archivos .yml se pueden leer y escribir utilizando librerías YAML disponibles para prácticamente todos los lenguajes de programación principales. .yml y .yaml identifican el mismo formato; .yml es la forma más antigua de tres letras conservada por muchas herramientas como docker-compose.yml, .gitlab-ci.yml y los flujos de trabajo de GitHub Actions. El formato se utiliza más comúnmente para la serialización de datos y la configuración de aplicaciones.
La serialización es un término utilizado en informática y se refiere al concepto de intercambiar datos entre programas o aplicaciones utilizando objetos bien definidos. Un objeto puede entenderse como un contenedor de datos. Por ejemplo, los registros de una base de datos son una forma de serialización de datos, ya que pueden intercambiarse fácilmente entre varias bases de datos. Los datos serializados también pueden tomar la forma de archivos estructurados que pueden enviarse entre aplicaciones. Entre los formatos de serialización más utilizados se encuentran .yml, XML, JSON y TOML.
Una característica distintiva de .yml es su uso de espacios en blanco significativos: la sangría define la estructura del documento y solo se permiten espacios; los tabuladores están explícitamente prohibidos por la especificación. Los documentos pueden abrirse opcionalmente con --- (inicio del documento) y cerrarse con .... YAML también admite comentarios en línea con #, escalares de bloque multilínea usando | o >, y anclas (&) con alias (*) para reutilizar valores repetidos.
Seguridad y protección
RIESGO: MEDIUMUn archivo .yml es texto plano y no se ejecuta por sí solo, por lo que leer uno es seguro. Dos riesgos reales: (1) los YAML de configuración (canalizaciones de CI, Compose, K8s, Ansible) contienen con frecuencia 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 arbitrarios; 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 palabras- Strangereal IFL camera-map (raro) - Unas pocas aplicaciones heredadas reutilizaron .yml para datos que no son YAML, pero hoy en día la extensión es virtualmente siempre texto YAML.
Programas que abren archivos YML
Detalles técnicos
especificación profunda| Tipo MIME | application/yaml (registrado en IANA); las variantes heredadas incluyen text/yaml, text/x-yaml, application/x-yaml |
| Codificación | UTF-8 (predeterminado y más común); UTF-16 y UTF-32 con BOM están permitidos por la especificación pero rara vez se usan en la práctica |
| Estructura de archivo | Mapeos basados en sangría (clave: valor), secuencias (- elemento) y escalares; el anidamiento se expresa puramente por el nivel de sangría |
| Espacios en blanco significativos | La sangría define la estructura; solo se permiten espacios - los tabuladores están explícitamente prohibidos por la especificación YAML |
| Marcadores de documento | El marcador opcional --- indica el inicio del documento; ... indica el fin del documento; un solo archivo .yml puede contener múltiples documentos YAML separados por --- |
| Soporte de comentarios | Comentarios en línea y de línea completa introducidos por # - ausentes en JSON y en la mayoría de los formatos de serialización binarios |
| Tipos de datos nativos | Cadena, entero, flotante, booleano, nulo, marca de tiempo y binario (codificado en base64 mediante la etiqueta !!binary) |
| Anclas y alias | & declara un ancla reutilizable; * hace referencia (alias) a ella - elimina la repetición de copiar y pegar en archivos de configuración complejos |
| Escalares de bloque | | (escalar de bloque literal) preserva los saltos de línea tal cual; > (escalar de bloque plegado) colapsa los saltos de línea en espacios |
| Superset de JSON | Desde YAML 1.2 (2009), cada archivo JSON válido es también un YAML válido, por lo que los analizadores YAML pueden leer JSON de forma nativa |
| Bytes mágicos / firma | Ninguno - no hay encabezado binario ni número mágico; se identifica por su estructura clave: valor basada en sangría y la extensión .yml o .yaml |
| Tamaño de archivo (típico) | De bytes a decenas de KB para archivos de configuración y de canalización CI/CD; rara vez supera unos pocos cientos de KB |
| Equivalencia de extensión | .yml y .yaml son idénticos en formato; .yml es la forma de tres letras de la era DOS adoptada por docker-compose.yml, .gitlab-ci.yml y GitHub Actions |
| Directiva de versión de especificación | El pragma opcional %YAML 1.2 al inicio del archivo declara la versión de la especificación; la mayoría de los archivos lo omiten y confían en los valores predeterminados del analizador |
| Lanzado | 2001 (YAML 1.0); YAML 1.1 (2005); current YAML 1.2 (2009, revised 1.2.2 in 2021) |
| Última versión | YAML 1.2.2 (2021) |
| Estándar abierto | Sí · libre de regalías |
| Especificación | yaml.org |
Conversiones de YML
Preguntas y respuestas de la comunidad
preguntado por usuariosAún no hay preguntas; sea el primero en preguntar sobre los archivos YML.