Sintaxis
Reglas Básicas
IndentaciónSolo espacios (sin tabulaciones), profundidad consistente
#Comentario (hasta el final de la línea)
---Marcador de inicio de documento
...Marcador de fin de documento
Sensible a mayúsculasLas claves y valores distinguen mayúsculas y minúsculas
Ejemplo Mínimo
--- name: Alice age: 30 active: true
Escalares
Tipos de Escalar
helloCadena (sin comillas)
"hello"Cadena (comillas dobles, permite escapes)
'hello'Cadena (comillas simples, literal)
42 / 3.14Número (entero / decimal)
true / falseBooleano
null / ~Valor nulo
2026-03-26Fecha (ISO 8601)
Reglas de Comillas
plain: no se necesitan comillas special: "los dos puntos: y almohadilla # necesitan comillas" escape: "línea\nnueva" literal: 'sin \n escape aquí'
Secuencias
Secuencia en Bloque
fruits: - apple - banana - cherry
Secuencia de Flujo (En Línea)
colors: [red, green, blue] matrix: [[1, 2], [3, 4]]
Secuencia de Objetos
users: - name: Alice role: admin - name: Bob role: user
Mapeos
Mapeo en Bloque
server: host: localhost port: 8080 debug: false
Mapeo de Flujo (En Línea)
point: {x: 10, y: 20}
Claves Complejas
? [first, second] : "valor de clave compuesta"
Anclas y Alias
Definir y Reutilizar
defaults: &defaults timeout: 30 retries: 3 production: <<: *defaults timeout: 60
Referencia
&nameDefinir un ancla
*nameReferenciar (alias) un ancla
<<Clave de fusión — fusionar mapeo en el actual
Cadenas Multi-línea
Escalares en Bloque
| (literal)Conserva saltos de línea exactamente
> (plegado)Pliega saltos de línea en espacios
|+ (conservar)Literal, conservar saltos de línea finales
|- (eliminar)Literal, eliminar saltos de línea finales
>- (plegar+eliminar)Plegado, eliminar saltos de línea finales
Bloque Literal
script: | echo "line one" echo "line two"
Bloque Plegado
description: > Este texto largo será plegado en una sola línea con espacios.
Etiquetas
Etiquetas de Tipo
!!str 42Forzar valor a cadena "42"
!!int "42"Forzar valor a entero 42
!!float 1Forzar valor a decimal 1.0
!!bool "true"Forzar valor a booleano
!!null ""Forzar valor a nulo
!!binaryDatos binarios codificados en Base64
Ejemplo de Etiqueta
port: !!str 8080 enabled: !!bool "yes" version: !!float 3
Patrones Comunes
Docker Compose
services: web: image: nginx:alpine ports: ["80:80"] environment: NODE_ENV: production
GitHub Actions
on: [push, pull_request] jobs: test: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4
Consejos
yamllintValidar YAML en cuanto a sintaxis y estilo
yqProcesador YAML de línea de comandos (como jq)
Evitar NorwayNO es false booleano — poner comillas a códigos de países
Evitar !!pythonNunca cargar YAML no confiable con cargadores inseguros