Validación y linting de YAML

YAML es sensible a la indentación y los espacios. Un solo error puede invalidar un despliegue en Docker Compose o Kubernetes. Las herramientas de validación y linting ayudan a detectar fallos, aplicar reglas de estilo y garantizar consistencia antes de ejecutar sistemas críticos.

13.1 Herramientas automáticas

a) YAML Lint (yamllint CLI)

Instalación: pip install yamllint

Validación:

yamllint config.yml

Muestra la línea y columna de errores, además de sugerencias de estilo. Existe versión online en YAML Lint.

b) Extensión YAML de Red Hat (VSCode)

Disponible en el Marketplace de VSCode, brinda validación en tiempo real, autocompletado basado en esquemas y sugerencias de corrección. Ideal para trabajar con Kubernetes, GitHub Actions o Docker.

c) Validación con JSON Schema

Muchos parsers permiten validar YAML contra esquemas JSON. Ejemplo: validar deployment.yaml contra el esquema oficial de apps/v1, garantizando estructura y tipos correctos.

d) Validación en pipelines CI/CD

Integrar validadores en automatizaciones evita que YAML erróneos lleguen a producción.

name: Validar YAML

on: [push, pull_request]

jobs:
  lint:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - name: Instalar yamllint
        run: pip install yamllint
      - name: Validar archivos YAML
        run: yamllint .

13.2 Errores comunes

Uso de tabulaciones

Incorrecto:

producto:
codigo: 1  # tabulación

Correcto:

producto:
  codigo: 1

Indentación inconsistente

Incorrecto:

usuario:
  nombre: Ana
   edad: 25

Correcto:

usuario:
  nombre: Ana
  edad: 25

Valores ambiguos sin comillas

Recomendado:

respuesta: "yes"
codigo_postal: "05000"

Separadores de documentos mal usados

Incorrecto:

---
producto: Teclado
---producto: Mouse

Correcto:

---
producto: Teclado
---
producto: Mouse

Listas mal indentadas

Incorrecto:

frutas:
- Manzana
  - Banana
- Naranja

Correcto:

frutas:
  - Manzana
  - Banana
  - Naranja

13.3 Buenas prácticas

  • Utiliza 2 espacios por nivel de indentación (nunca tabs).
  • Valida los archivos con yamllint o la extensión de VSCode antes de desplegar.
  • Usa comillas en valores ambiguos ("yes", "no", "00123").
  • Mantén un estilo consistente (claves en minúsculas, estructura clara).
  • Versiona los YAML y agrega validación automática en los pipelines.

En conclusión, la validación y el linting son fundamentales para asegurar que los archivos YAML sean correctos, consistentes y estén listos para sistemas sensibles como Kubernetes, Docker Compose o workflows de CI/CD.