Una de las características más poderosas de YAML es la posibilidad de reutilizar bloques mediante anclas (&
) y referencias o alias (*
). Esto evita duplicación y mantiene la coherencia en configuraciones grandes.
Un ancla se define con el símbolo &
seguido de un nombre y marca un bloque reutilizable.
base: &valores_base
memoria: 4GB
cpu: 2
disco: 50GB
Una referencia utiliza *
con el nombre del ancla para copiar el bloque. Con el operador de merge (<<
) se fusiona en el diccionario actual.
servidor1:
<<: *valores_base
nombre: servidor-app
servidor2:
<<: *valores_base
nombre: servidor-db
Resultado expandido:
servidor1:
memoria: 4GB
cpu: 2
disco: 50GB
nombre: servidor-app
servidor2:
memoria: 4GB
cpu: 2
disco: 50GB
nombre: servidor-db
Los alias también funcionan sobre listas completas.
usuarios: &usuarios_base
- nombre: Ana
rol: admin
- nombre: Marcos
rol: editor
equipoA:
miembros: *usuarios_base
equipoB:
miembros: *usuarios_base
Podemos partir de un ancla y sobrescribir campos específicos en cada alias.
config_base: &config_base
puerto: 8080
modo: desarrollo
debug: true
config_prod:
<<: *config_base
modo: produccion
debug: false
Resultado:
config_prod:
puerto: 8080
modo: produccion
debug: false
En Docker Compose es habitual reutilizar bloques de configuración.
version: "3.9"
x-service-base: &service_base
restart: always
networks:
- backend
services:
app1:
<<: *service_base
image: miapp:1.0
ports:
- "8080:8080"
app2:
<<: *service_base
image: miapp:2.0
ports:
- "9090:8080"
networks:
backend:
&config_base
, &valores_base
) para claridad.<<: *alias
) para modificar solo algunas claves.Con anclas y referencias, YAML permite reutilizar estructuras, reducir duplicación y mantener archivos más ordenados.