DevToolBoxFREE
BlogAdvertise

Sintaxis YAML y validación: Errores comunes y cómo solucionarlos

9 min de lecturapor DevToolBox

YAML es el formato de configuración preferido para Docker, Kubernetes y pipelines CI/CD. A pesar de su sintaxis amigable, es sorprendentemente fácil cometer errores.

Dónde se usa YAML

  • Docker Compose
  • Manifiestos Kubernetes
  • GitHub Actions / GitLab CI
  • Playbooks Ansible
  • Archivos de configuración

Reglas de sintaxis básicas

Indentación

YAML usa espacios (nunca tabulaciones):

# ✅ Correct (2-space indentation)
server:
  host: localhost
  port: 8080
  database:
    name: myapp
    pool: 10

# ❌ Wrong (tab characters or inconsistent spaces)
server:
	host: localhost    # Tab character - INVALID!
   port: 8080        # 3 spaces - inconsistent!

Pares clave-valor

Separados por dos puntos y espacio:

# ✅ Correct
name: John Doe
port: 8080

# ❌ Wrong - missing space after colon
name:John Doe

Strings multilínea

YAML ofrece dos estilos para strings multilínea:

# | (literal block) - preserves newlines
description: |
  This is line one.
  This is line two.
  Each newline is preserved.

# > (folded block) - folds newlines to spaces
description: >
  This is a long paragraph
  that will be joined into
  a single line.

Tipos de datos

TipoSintaxisEjemplo
Stringplain, "quoted", 'quoted'name: John
Integer42, 0xFF, 0o77port: 8080
Float3.14, .inf, .nanpi: 3.14159
Booleantrue/falsedebug: true
Nullnull, ~, (empty)value: null
DateYYYY-MM-DDdate: 2026-02-10

El "problema Noruega"

En YAML 1.1, `NO` se interpreta como `false`. Use comillas:

# ❌ YAML 1.1 interprets these as booleans!
country: NO        # → false
answer: yes        # → true
switch: on         # → true

# ✅ Fix: quote the values
country: "NO"      # → string "NO"
answer: "yes"      # → string "yes"
switch: "on"       # → string "on"

Colecciones

# List (sequence)
fruits:
  - apple
  - banana
  - cherry

# Nested map
database:
  host: localhost
  port: 5432
  credentials:
    user: admin
    password: secret

# Inline / Flow style
fruits: [apple, banana, cherry]
point: {x: 10, y: 20}

Top 10 errores YAML

#ErrorCausaSolución
1Error de tabulaciónTabs para indentarReemplazar con espacios
2Indentación inconsistenteMezcla de 2 y 4 espaciosUsar indentación consistente
3Espacio faltante`key:value`Agregar espacio después de `:`
4Caracteres especiales sin comillasValores con : o # sin comillasPoner entre comillas
5Coerción booleanayes/no como booleanosUsar comillas
6Strings con dos puntosURLs rotasCitar el valor completo
7Claves duplicadasMisma clave dos vecesEliminar duplicados
8Espacios al finalEspacios invisiblesConfigurar editor
9Error de indentación de listaItems no alineadosAlinear `-`
10Separador de documento faltanteMúltiples documentos sin `---`Agregar `---`

YAML vs JSON vs TOML

CaracterísticaYAMLJSONTOML
Comments# supportNone# support
Multi-line strings| and >\\n only""" triple quotes
Data typesRich (dates, etc.)Basic (6 types)Rich (dates, etc.)
ReadabilityHighMediumHigh
Machine parsingComplexSimpleMedium
Best forConfig filesAPIs, data exchangeApp config

Mejores prácticas

  • Usar linter YAML en CI/CD
  • Mostrar espacios en el editor
  • Usar 2 espacios
  • Citar strings ambiguos
  • Usar validación de esquema
  • Mantener archivos pequeños y modulares

FAQ

¿Se pueden usar tabulaciones en YAML?

No. YAML prohíbe estrictamente las tabulaciones para la indentación.

¿Diferencia entre comillas simples y dobles?

Simples: string literal. Dobles: permiten secuencias de escape.

¿Cómo representar null?

`null`, `~`, o valor vacío.

¿Por qué YAML trata "NO" como false?

YAML 1.1 trata yes/no como booleanos. YAML 1.2 solo reconoce true/false.

¿Fue útil?

Stay Updated

Get weekly dev tips and new tool announcements.

No spam. Unsubscribe anytime.

Partner Picks

Sponsor this article

Place your product next to this developer topic with tracked clicks.

Ask about article sponsorship

Artículos relacionados

This site uses cookies for analytics and to display ads. By continuing to browse, you agree. Privacy Policy