Clase 00 — Introducción a YAML
YAML (YAML Ain't Markup Language) es un formato de serialización de datos legible por humanos. Se usa ampliamente en DevOps para archivos de configuración.
¿Dónde se usa YAML?
| Herramienta | Archivo |
|---|---|
| Docker Compose | docker-compose.yml |
| Kubernetes | Manifests (.yaml) |
| GitHub Actions | .github/workflows/*.yml |
| GitLab CI | .gitlab-ci.yml |
| Ansible | Playbooks, inventarios |
| Helm | values.yaml, Chart.yaml |
¿Por qué YAML y no JSON o XML?
# YAML — Legible y limpio
nombre: RoxsRoss
rol: DevOps Engineer
habilidades:
- Docker
- Kubernetes
- Terraform
YAML es menos verboso que JSON y mucho menos que XML. Soporta comentarios y es más legible.
Reglas fundamentales
# ✅ Regla 1: Indentación con ESPACIOS (nunca tabs)
padre:
hijo: valor
# ✅ Regla 2: Espacio obligatorio después de :
nombre: RoxsRoss # ✅ Correcto
# nombre:RoxsRoss # ❌ Error
# ✅ Regla 3: Comentarios con #
# Esto es un comentario
# ✅ Regla 4: La indentación define la estructura
nivel1:
nivel2:
nivel3: valor
Tu primer archivo YAML
# mi-config.yaml
app:
nombre: mi-api
version: "1.0.0"
puerto: 8080
debug: false
base_datos:
host: localhost
puerto: 5432
nombre: mi_db
logs:
nivel: info
archivo: /var/log/app.log
Validar YAML
# Instalar yamllint
pip install yamllint
# Validar archivo
yamllint mi-config.yaml
# Con Python
python3 -c "import yaml; yaml.safe_load(open('mi-config.yaml'))"
Errores comunes
# ❌ Error 1: Usar tabs
padre:
hijo: valor
# ❌ Error 2: Falta espacio después de :
nombre:valor
# ❌ Error 3: Indentación inconsistente
padre:
hijo1: a
hijo2: b
# ❌ Error 4: Caracteres especiales sin comillas
mensaje: esto tiene: dos puntos
# ✅ Correcto:
mensaje: "esto tiene: dos puntos"