📘 Guía esencial de YAML: qué es, para qué sirve y cómo usarlo
🧠 ¿Qué es YAML?
YAML significa YAML Ain’t Markup Language (YAML No es un Lenguaje de Marcado).
Es un lenguaje de serialización de datos, enfocado en ser fácil de leer y escribir por humanos.
🔍 Se usa para describir estructuras de datos como listas, diccionarios, configuraciones, sin necesidad de escribir código real.
🎯 ¿Para qué sirve?
YAML se utiliza para escribir archivos de configuración en muchos entornos de desarrollo moderno. Es ideal cuando necesitás describir:
- Servicios
- Variables
- Dependencias
- Flujos de trabajo automatizados
🛠️ ¿Dónde se aplica?
YAML está en todas partes del ecosistema DevOps y desarrollo moderno:
Herramienta / Sistema | Uso de YAML |
---|---|
Docker Compose | Definición de contenedores (docker-compose.yml) |
GitHub Actions | Workflows de CI/CD (.github/workflows/) |
Kubernetes | Config de pods, servicios y despliegues |
Ansible | Playbooks para automatización de tareas |
CircleCI / Travis | Configuración de pipelines de CI |
Spring Boot (Java) | Configuración de aplicaciones (application.yml) |
Jekyll / Hugo | Sitios estáticos, metadatos de posts |
🔤 YAML vs JSON: ¿Por qué YAML?
📦 JSON:
{
"nombre": "Anthony",
"edad": 30,
"lenguajes": ["PHP", "JavaScript", "Python"]
}
📘 YAML:
nombre: Anthony
edad: 30
lenguajes:
- PHP
- JavaScript
- Python
✅ Ventajas de YAML sobre JSON:
- Más limpio y fácil de leer
- Soporta comentarios
- Menos caracteres (sin llaves, comillas ni corchetes)
- Ideal para edición manual
🧩 Sintaxis básica de YAML
Elemento | Ejemplo | Notas |
---|---|---|
Clave-valor | nombre: Anthony | Siempre con : y un espacio |
Lista | - PHP | Usa - con sangría |
Objeto anidado | Usa sangrías con espacios (no tabs) | ⚠️ Muy sensible a espacios |
Comentario | # Esto es un comentario | Ignorado al procesar el archivo |
Booleanos | activo: true o false | En minúsculas |
Nulos | dato: null o dato: o dato: ~ | Tres formas válidas |
🧪 Ejemplos prácticos
🔹 Lista de tecnologías
tecnologias:
- Docker
- Apache
- PHP
- Node.js
🔹 Objeto anidado
usuario:
nombre: Anthony
datos:
edad: 30
ciudad: Córdoba
🔹 Variables de entorno (como en Docker Compose)
environment:
MYSQL_ROOT_PASSWORD: 1234
MYSQL_DATABASE: tienda
🚀 Caso real: Docker Compose
version: '3.8'
services:
web:
image: php:8.2-apache
ports:
- "8080:80"
volumes:
- ./app:/var/www/html
db:
image: mariadb
environment:
MYSQL_ROOT_PASSWORD: rootpass
👉 Este archivo define dos contenedores (web
y db
) que se comunican entre sí. Es YAML puro.
🔁 Equivalente en JSON:
{
"version": "3.8",
"services": {
"web": {
"image": "php:8.2-apache",
"ports": [
"8080:80"
],
"volumes": [
"./app:/var/www/html"
]
},
"db": {
"image": "mariadb",
"environment": {
"MYSQL_ROOT_PASSWORD": "rootpass"
}
}
}
}
🧠 Observaciones:
YAML | JSON |
---|---|
Usa sangrías | Usa llaves {} y corchetes [] |
Soporta comentarios # | ❌ JSON no permite comentarios |
Más legible para humanos | Más estructurado para máquinas |
Ideal para configuración manual | Ideal para comunicación API |
⚠️ Errores comunes en YAML
- ❌ Usar tabulaciones
- ✔️ Siempre usá espacios para sangrar
- ❌ No dejar espacio luego de :
- ✔️ Siempre: clave: valor
- ❌ Mezclar listas y objetos sin estructura clara
✅ Buenas prácticas
- Usá 2 espacios para sangrías
- Validá tu YAML en https://yamlvalidator.com
- Comentá cuando haga falta (# comentario)
- No uses comillas a menos que sea necesario
🧠 Conclusión
YAML es el idioma de las configuraciones modernas. Aprenderlo bien te va a ayudar a dominar herramientas de DevOps, backend y automatización como Docker, GitHub Actions, Kubernetes y más.
📌 Es como hablar el idioma que entienden tus herramientas.