YAML (YAML Ain't Markup Language) es un formato de serialización de datos de texto plano, legible por humanos y diseñado para ser extremadamente intuitivo, limpio y fácil de integrar con lenguajes de programación modernos.
A diferencia de lenguajes de marcado como XML o HTML, YAML prescinde totalmente de etiquetas de apertura y cierre o corchetes excesivos, basando su estructura jerárquica exclusivamente en la indentación (la sangría con espacios). Es el estándar de facto en la industria para la escritura de archivos de configuración, manifiestos de infraestructura y automatización en herramientas como Docker Compose, Kubernetes, Ansible o GitHub Actions.
¿Cómo se estructura YAML?
La legibilidad es la prioridad absoluta de YAML. Su sintaxis se apoya en tres elementos fundamentales:
- Pares Clave-Valor: Se definen separando la clave y el valor mediante dos puntos y un espacio obligatorios (ej.
entorno: produccion). - Colecciones y Listas: Se representan mediante guiones seguidos de un espacio (
-) para indicar elementos secuenciales dentro de un array. - Jerarquía por Indentación: Las estructuras anidadas dependen estrictamente de los espacios en blanco (se recomienda usar siempre 2 o 4 espacios, estando terminantemente prohibido el uso de tabuladores).
Tipos de datos y sintaxis básica
| Estructura en YAML | Descripción y Ejemplo de Sintaxis | Equivalente aproximado en JSON |
|---|---|---|
| Escalar (Texto / Número) | Valores simples de texto, numéricos o booleanos.puerto: 8080activo: true |
{"puerto": 8080, "activo": true} |
| Listas / Arrays | Conjunto ordenado de elementos precedidos por guiones.servidores: - web01 - web02 |
{"servidores": ["web01", "web02"]} |
| Diccionarios / Mapas | Subconjuntos anidados de propiedades mediante sangría.base_datos: host: localhost puerto: 3306 |
{"base_datos": {"host": "localhost", "puerto": 3306}} |
Características principales:
- Su nombre original era "Yet Another Markup Language", pero posteriormente se modificó a un acrónimo recursivo ("YAML Ain't Markup Language") para recalcar que está enfocado a datos y no a documentos de marcado.
- Soporta comentarios de una sola línea utilizando el símbolo almohadilla (
#), lo que facilita enormemente la documentación de parámetros en archivos complejos. - Permite definir múltiples documentos independientes dentro de un mismo fichero de texto plano separándolos mediante tres guiones (
---). - Es altamente interpretado y procesado de forma nativa o mediante librerías en casi todos los lenguajes de programación modernos (Python, JavaScript, Ruby, Go, etc.).
- Un error de alineación o el uso accidental de un tabulador en lugar de espacios provocará un fallo inmediato de sintaxis (SyntaxError) al ser leído por el software.
Analogía: Imagina la lista de la compra o el esquema de notas que escribes rápidamente en un bloc de notas de papel para organizar las tareas de casa. En lugar de rellenar formularios informáticos recargados de etiquetas y códigos de barras, anotas de forma limpia y visual cada categoría con sangrías y guiones. Cualquier persona que coja el papel entiende de un vistazo qué hay que comprar y en qué orden, exactamente igual que hace un motor de despliegue al leer un archivo YAML.
Actividad práctica
Objetivo:
Diseñar un manifiesto de configuración básico en formato YAML simulando un entorno de contenedores y verificar su correcta sintaxis.
Tareas:
- Crea un fichero de texto plano en tu entorno de desarrollo llamado
config-app.yml. - Escribe la siguiente estructura respetando estrictamente las sangrías de espacios:
version: '3.8' aplicacion: nombre: "Portal Educativo FP" puerto: 8080 activo: true bases_datos: - mysql - redis desarrolladores: - nombre: "Santi" rol: "Profesor" - nombre: "Alumno" rol: "Administrador" - Comprueba que no has utilizado tabuladores en ningún nivel de la indentación del archivo.
- Valida la estructura del documento ejecutando un script rápido de verificación en tu terminal (por ejemplo, utilizando Python):
python3 -c "import yaml; yaml.safe_load(open('config-app.yml'))"
Preguntas de reflexión:
- ¿Por qué está estrictamente prohibido utilizar el carácter de tabulación (Tab) para definir la indentación en un documento YAML?
- ¿Qué símbolo se utiliza convencionalmente en YAML para añadir comentarios aclaratorios que no deben ser interpretados por el software?
- ¿Cuál es la diferencia fundamental en la filosofía de diseño entre un formato basado en datos como YAML y un formato basado en marcas como XML o HTML?
- ¿Qué utilidad tiene el uso de los tres guiones iniciales (
---) al comienzo de un archivo YAML? - ¿Por qué se ha convertido YAML en el formato estándar de configuración para herramientas de orquestación e infraestructura como Kubernetes o Docker Compose?
Haz clic aquí para ver las soluciones y explicaciones
1. ¿Por qué está estrictamente prohibido utilizar el carácter de tabulación (Tab) para definir la indentación en un documento YAML?
Porque el estándar oficial de YAML prohíbe explícitamente el uso de tabuladores para evitar inconsistencias de visualización entre diferentes editores de código o sistemas operativos (que interpretan el ancho del tabulador de manera distinta). La jerarquía debe estructurarse obligatoriamente utilizando espacios en blanco.
2. ¿Qué símbolo se utiliza convencionalmente en YAML para añadir comentarios aclaratorios que no deben ser interpretados por el software?
Se utiliza el símbolo de la almohadilla (#). Cualquier texto que se encuentre a continuación de este carácter en una línea es ignorado por el analizador (*parser*) de YAML.
3. ¿Cuál es la diferencia fundamental en la filosofía de diseño entre un formato basado en datos como YAML y un formato basado en marcas como XML o HTML?
YAML está diseñado específicamente para representar estructuras de datos de forma limpia, legible y directa (parecida a los diccionarios o listas de programación), prescindiendo de etiquetas de apertura y cierre recargadas. XML y HTML son lenguajes de marcas orientados a estructurar documentos y textos mediante jerarquías de etiquetas explícitas.
4. ¿Qué utilidad tiene el uso de los tres guiones iniciales (---) al comienzo de un archivo YAML?
Actúan como una directiva explícita de inicio de documento (*document marker*). Son especialmente útiles cuando se combinan varios documentos YAML independientes dentro de un mismo archivo físico de texto.
5. ¿Por qué se ha convertido YAML en el formato estándar de configuración para herramientas de orquestación e infraestructura como Kubernetes o Docker Compose?
Debido a su extrema legibilidad humana, su facilidad para representar estructuras complejas y anidadas sin sobrecarga visual de sintaxis, y su compatibilidad nativa con la mayoría de lenguajes de programación modernos, lo que simplifica enormemente la gestión del despliegue de infraestructura como código (IaC).