📘 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.
Top comments (0)