RunToolz iconRunToolz
Welcome to RunToolz!
YAMLConfiguraciónDevOps

YAML: Archivos de Configuración Sin el Desorden

Por qué YAML se convirtió en el estándar para archivos de config y cómo evitar sus peculiaridades.

RunToolz Team16 de enero de 20263 min read

Cada manifiesto de Kubernetes. Cada flujo de trabajo de GitHub Actions. Cada archivo Docker Compose.

YAML está en todos lados para configuración. Es legible, es flexible y tiene algunas peculiaridades sorprendentes.

¿Por Qué YAML?

JSON es estricto: comillas dobles, sin comentarios, sin comas finales.

YAML es permisivo: sintaxis mínima, comentarios permitidos, legible para humanos.

# Configuración YAML
database:
  host: localhost
  port: 5432
  name: miapp
{
  "database": {
    "host": "localhost",
    "port": 5432,
    "name": "miapp"
  }
}

Mismos datos, menos ruido en YAML.

¿Quieres probarlo tú mismo?Convertir YAML a JSON

Lo Básico

Pares clave-valor:

nombre: Juan
edad: 30

Estructuras anidadas (usa espacios, no tabs):

persona:
  nombre: Juan
  edad: 30

Listas:

colores:
  - rojo
  - verde
  - azul

Listas y objetos en línea:

colores: [rojo, verde, azul]
persona: {nombre: Juan, edad: 30}

El Problema de Noruega

pais: NO

¿Qué es NO? Un booleano false. YAML interpreta NO, Yes, on, off y otros como booleanos.

El código de país de Noruega se convierte en false. Tu configuración se rompe de maneras misteriosas.

Solución: Pon entre comillas cadenas que podrían interpretarse como booleanos.

pais: "NO"

El Problema de Cadena Multilínea

descripcion: Esta es una larga
  descripcion que continua

¿Son dos líneas o una con "que continua" indentado? Depende del analizador YAML.

Multilínea explícita:

# Literal (preserva saltos de línea)
descripcion: |
  Línea uno
  Línea dos

# Plegado (une líneas)
descripcion: >
  Esta es una línea
  larga cuando se analiza

La Indentación Es Significativa

Dos espacios. No tabs. No un espacio. No tres.

# Correcto
padre:
  hijo: valor

# Incorrecto - carácter tab
padre:
	hijo: valor

Mezclar tabs y espacios rompe YAML silenciosamente. Configura tu editor para usar espacios.

Interpretación de Números

version: 1.10

¿Es eso la cadena "1.10" o el número 1.1? La mayoría de analizadores lo interpretan como 1.1.

La matemática de punto flotante ataca de nuevo. Pon entre comillas los números de versión.

version: "1.10"

Anclas y Alias

YAML puede referenciar contenido repetido:

defaults: &defaults
  timeout: 30
  reintentos: 3

produccion:
  <<: *defaults
  timeout: 60

Poderoso para reducir duplicación. Confuso cuando se exagera.

Validando YAML

La flexibilidad de YAML significa que muchas cosas que parecen válidas no lo son.

  • Usa un linter en tu editor
  • Valida contra un esquema cuando sea posible
  • Convierte a JSON para ver qué interpretó realmente el analizador

Si tu config no está funcionando, verifica qué ve el analizador, no lo que escribiste.

YAML vs JSON vs TOML

YAML: Legible para humanos, muchas características, casos extremos peculiares.

JSON: Estricto, simple, ampliamente soportado, verboso.

TOML: Explícito, menos sorpresas, ganando popularidad para configs.

Para datos máquina-a-máquina, JSON es más seguro. Para configs editados por humanos, YAML funciona si conoces las peculiaridades.


YAML prioriza legibilidad sobre estrictez. Ese compromiso crea casos extremos. Pon entre comillas cadenas que parecen booleanos o números, usa sintaxis multilínea explícita y valida antes de desplegar.