Configuración YAML (.yaml)
YAML EstándarYAML Ain’t Markup Language (YAML) es el formato de serialización de datos más utilizado en DevOps, infraestructura en la nube (Kubernetes, Docker Compose) y automatización CI/CD. Su sangría clara facilita la lectura.
Convertir de YAML a JSON
Convertidor gratuito de YAML a JSON en el navegador. Convierte archivos al instante en tu dispositivo.
Inspección y metadatos
Los sistemas operativos y analizadores de archivos identifican los archivos de YAML inspeccionando la secuencia de bytes binarios inicial:
Firma de cabecera a nivel de bytes (bytes mágicos)
Los sistemas operativos y analizadores de archivos identifican los archivos de YAML inspeccionando la secuencia de bytes binarios inicial:
FIRMA HEXADECIMAL (DESPLAZAMIENTO 0):
2D 2D 2D 0AREPRESENTACIÓN ASCII: ---\n
Estandarización: YAML 1.2.2 Specification
Especificaciones técnicas
| Arquitectura del contenedor | Formato de serialización de datos legible basado en sangría; es un superconjunto de JSON que admite anclajes y alias |
| Compresión | Flujo de texto sin comprimir |
| Orden de bytes (Endianness) | Flujo de texto UTF-8 / Unicode |
| Espacios de color | N/D (Serialización de datos) |
| Canales y estructura | Mapeos (diccionarios clave-valor), secuencias (listas), valores escalares (cadenas, números y booleanos) y anclajes (&ref/*ref) |
| Dimensiones máximas | Tamaño de documento ilimitado (admite flujos de varios documentos separados por «---») |
| Transparencia | Ninguna |
| Streaming y progresivo | Los flujos con varios documentos permiten procesarlos secuencialmente, uno por uno. |
Matriz de comparación técnica: YAML frente a la competencia
| Atributo técnico | YAML (Actual) | JSON | TOML | XML |
|---|---|---|---|---|
| Estilo de sintaxis | Jerarquía definida mediante sangría | Corchetes y comillas estrictos | Tablas y pares clave=valor | Etiquetas de apertura y cierre verbosas |
| Soporte de comentarios | Nativo (comentarios #) | No admite comentarios | Nativo (comentarios #) | Comentarios con <!-- --> |
| Adopción de DevOps | La compatibilidad varía según la aplicación. | La compatibilidad varía según la aplicación. | Configuración de paquetes de Rust/Python | Configuración heredada empresarial |
| Reutilización de datos | Anclajes (&) y alias (*) nativos | Ninguno (duplicación manual) | Ninguno (duplicación manual) | Entidades XML |
Modos de corrupción comunes y guía de recuperación hexadecimal
El analizador indica «mapping values are not allowed here» (aquí no se permiten valores de mapeo) o informa de un error de sangría.
Causa raíz: Mezcla de tabuladores con espacios o niveles de sangría desalineados.
Recuperación: Cambia los tabuladores por espacios y Valida la sintaxis con YAML Formatter de File2File.app.
Análisis de seguridad y vectores de ataque al analizador
Históricamente, algunos analizadores YAML que admiten etiquetas de tipo personalizadas, como «yaml.load()» de PyYAML, permitían ejecutar código de forma remota al crear objetos arbitrarios.
Vectores de ataque conocidos
- Ejecución de código arbitrario mediante etiquetas inseguras de deserialización de objetos (por ejemplo, «!!python/object/apply»).
- Bombas de expansión de entidades (equivalentes a «billion laughs») creadas con anclajes y alias YAML.
- Vulnerabilidades de confusión de tipos debido al análisis implícito de booleanos y marcas de tiempo.
Mejores prácticas defensivas: Usa siempre analizadores YAML seguros (como «yaml.safe_load()» en Python) y Limita la profundidad de expansión de los anclajes.
Orígenes históricos e hitos
Ventajas principales
- YAML se usa mucho en herramientas de infraestructura, pero la compatibilidad y el comportamiento varían según la implementación.
- Su sintaxis clara y legible evita el exceso de llaves, corchetes y comillas gracias a una sangría intuitiva.
- Admite referencias y anclajes (&anchor / *anchor) para reutilizar bloques de configuración sin duplicarlos.
Limitaciones técnicas
- Es sensible a los espacios en blanco: un tabulador accidental o un espacio de más pueden alterar la jerarquía del documento o causar errores de análisis.
- Tiene problemas conocidos de conversión de tipos: palabras sin comillas como «no», «on» o «yes», y códigos de país como «NO» (Noruega), pueden interpretarse como valores booleanos.
- Su análisis es mucho más lento que el de los formatos binarios o JSON estricto.
Curiosidades técnicas interesantes
- YAML significaba originalmente «Yet Another Markup Language», pero se renombró en tono humorístico con el acrónimo recursivo «YAML Ain’t Markup Language» para subrayar que sirve para serializar datos.
- El «problema de Noruega» es un error de programación conocido: en un archivo YAML, el código de país «NO» se interpretaba como el valor booleano false.
- Todo archivo JSON válido también es un archivo YAML válido al 100 %.
Preguntas técnicas frecuentes
¿Para qué se utiliza YAML?
YAML es el lenguaje de configuración principal para la computación en la nube, el despliegue de clústeres de Kubernetes, los archivos Docker Compose, los flujos de trabajo de GitHub Actions y los ajustes de software.
¿Puedo usar tabuladores en archivos YAML?
No. La especificación oficial de YAML prohíbe usar tabuladores para la sangría. Usa siempre espacios (normalmente, dos por nivel).
¿Cómo puedo convertir YAML a JSON?
Puedes convertir archivos YAML a JSON limpio y validado con un clic, directamente en tu navegador con File2File.app y sin que los datos salgan de tu dispositivo.
Pares de conversión de YAML relacionados
Convertir archivos de configuración YAML a JSON transforma estructuras de texto con sangría legibles para las personas en objetos con formato estricto que las aplicaciones web pueden analizar.
Convertir archivos de configuración JSON a YAML transforma estructuras de datos rígidas, pensadas para el procesamiento automático, en documentos claros y legibles que los administradores de sistemas pueden editar con más facilidad.