Formato YAML

YAML (YAML Ain't Markup Language) es un formato de serialización de datos legible por humanos que se ha vuelto extremadamente popular para archivos de configuración y parametrización, especialmente en el mundo de la administración de sistemas, desarrollo de software y automatizaciones.

El nombre YAML es un acrónimo recursivo que significa "YAML Ain't Markup Language", enfatizando que no es un lenguaje de marcado como HTML o XML, sino más bien un estándar para la representación de datos estructurados de forma limpia y comprensible.

La principal ventaja del formato YAML es su legibilidad.

A diferencia de otros formatos como JSON o XML, YAML utiliza la indentación y una sintaxis muy clara que hace que incluso personas sin conocimientos técnicos puedan entender fácilmente la estructura y el contenido de un archivo YAML.

El formato YAML se basa en tres conceptos fundamentales: escalares (valores simples como texto o números), listas (secuencias de elementos) y mapas (conjuntos de pares clave-valor). Estos elementos se pueden combinar para crear estructuras de datos complejas de forma muy intuitiva.

La sintaxis de YAML es bastante simple:

  • Los pares clave-valor se separan con dos puntos seguidos de un espacio.

  • Las listas se representan con guiones.

  • La indentación (normalmente con espacios, no tabulaciones) define la jerarquía de los datos.

Por ejemplo, un ejemplo de archivo en formato YAML básico podría verse así:

# Información personal

Un ejemplo de uso de YAML es Docker Compose, donde la parametrización de contenedores Docker se hace mediante el archivo docker-compose.yml.

services:
  # Aplicación web
  web:
    image: nginx:latest
    container_name: mi_web
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./html:/usr/share/nginx/html
      - ./nginx.conf:/etc/nginx/nginx.conf
    environment:
      - NGINX_HOST=localhost
      - NGINX_PORT=80
    depends_on:
      - database
    restart: unless-stopped

  # Base de datos
  database:
    image: mysql:8.0
    container_name: mi_db
    environment:
      MYSQL_ROOT_PASSWORD: mi_password_seguro
      MYSQL_DATABASE: mi_aplicacion
      MYSQL_USER: usuario
      MYSQL_PASSWORD: password123
    ports:
      - "3306:3306"
    volumes:
      - db_data:/var/lib/mysql
      - ./init.sql:/docker-entrypoint-initdb.d/init.sql
    restart: unless-stopped

  # Cache Redis
  redis:
    image: redis:alpine
    container_name: mi_cache
    ports:
      - "6379:6379"
    command: redis-server --appendonly yes
    volumes:
      - redis_data:/data
    restart: unless-stopped

# Volúmenes persistentes
volumes:
  db_data:
  redis_data:

# Red personalizada (opcional)
networks:
  default:
    driver: bridge

Un archivo docker-compose.yml típico define servicios, redes y volúmenes usando la sintaxis YAML. Por ejemplo, para configurar una aplicación WordPress con MySQL, el archivo incluiría secciones como services, ports, environment y volumes, todo estructurado de forma clara y jerárquica gracias al formato YAML.

Una de las características más importantes del formato YAML es que es case-sensitive (sensible a mayúsculas y minúsculas) y que la indentación debe ser consistente. Esto significa que debes prestar especial atención a usar siempre espacios en lugar de tabs (tabulador) y mantener el mismo nivel de indentación para elementos del mismo nivel jerárquico.

Los comentarios en los archivos YAML se inician con el símbolo #, lo que permite documentar tus archivos de configuración y parametrización de forma clara.

Para trabajar con archivos YAML de forma eficiente, es recomendable usar editores de texto que soporten syntax highlighting para este formato.
La mayoría de los editores modernos como Visual Studio Code o Notepad++ incluyen soporte nativo para YAML, lo que te ayuda a identificar errores de sintaxis o indentación.

Es importante mencionar que los errores más comunes al trabajar con YAML suelen estar relacionados con la indentación incorrecta o el uso de tabs (tabulador) en lugar de espacios.
Estos errores pueden hacer que un archivo YAML sea completamente inválido, por lo que siempre es recomendable validar la sintaxis antes de usar el archivo en producción.

Álvaro Fontela

Álvaro Fontela

Consultor WordPress, además de CEO y cofundador de Raiola Networks. Autor del libro "Curso Práctico de WordPress" y speaker en congresos de marketing digital.

Autor