
Este artículo puede contener enlaces de afiliado. Si compras desde estos enlaces, el precio para ti es el mismo y la tienda me paga una pequeña comisión que ayuda a mantener Tecnoyfoto.
Revisión técnica: 27 de octubre de 2026. Esta es una guía complementaria procedente del curso anterior, no un capítulo numerado del nuevo. Para seguir el itinerario, consulta el curso actual de YAML en Home Assistant.
El lenguaje de serialización de datos YAML es la columna vertebral de innumerables proyectos de IoT y DevOps, desde la configuración de Home Assistant hasta la definición de flujos de trabajo en GitHub Actions. Su popularidad radica en una sintaxis limpia y legible para los humanos. Sin embargo, una de las dudas más frecuentes es cómo gestionar las variables en YAML para no repetir código.
Es crucial aclarar un punto desde el principio: YAML, en su especificación base, no tiene un concepto de «variables» como lo entendemos en lenguajes de programación como Python o JavaScript. No puedes declarar una variable y luego modificarla. En su lugar, YAML ofrece un mecanismo mucho más potente y acorde a su naturaleza declarativa para reutilizar valores YAML: los Anchors (Anclas) y Aliases (Alias).
En esta guía definitiva de 2026, vamos a desmitificar el concepto de variables en YAML. Te enseñaré el método estándar y correcto para reutilizar datos, y también exploraremos otras técnicas específicas de cada plataforma que a menudo se confunden con variables nativas.
La Forma Correcta y Estándar: YAML Anchors y Alias
La solución nativa de YAML para el principio DRY (Don’t Repeat Yourself) se basa en dos componentes: las anclas y los alias. Esta es la técnica que deberías priorizar, ya que forma parte del estándar YAML y funcionará en cualquier parser compatible.
- Anchor (Ancla): Se usa para marcar un valor con un nombre. La sintaxis es
&nombre_del_ancla. - Alias: Se usa para referenciar (reutilizar) un valor previamente marcado con un ancla. La sintaxis es
*nombre_del_ancla.
Piénsalo como poner una etiqueta a un dato para poder «pegar» ese mismo dato en cualquier otro lugar del documento. Para entender mejor la sintaxis YAML, veamos un ejemplo.
Ejemplo Práctico de Anchors y Alias en un Docker Compose
Imagina que estás configurando varios servicios en un archivo docker-compose.yml y todos necesitan las mismas variables de entorno para conectarse a una base de datos. En lugar de repetirlas, usamos anclas.
# Definimos un bloque de variables de entorno y lo marcamos con el ancla &db_env
x-environment: &db_env
DB_HOST: postgres_db
DB_USER: admin
DB_PASS: supersecret_password_123
services:
backend_app:
image: my-app:latest
environment:
# Usamos el alias *db_env para insertar el bloque completo
<<: *db_env
PORT: 8000
worker:
image: my-worker:latest
environment:
# Reutilizamos el mismo bloque aquí
<<: *db_env
QUEUE_NAME: "high_priority"
En este ejemplo, definimos el ancla &db_env una sola vez. Luego, con el alias *db_env, inyectamos ese bloque de datos en dos servicios diferentes. Si la contraseña de la base de datos cambia, solo la modificamos en un único lugar. Esto es un pilar fundamental para la optimización y reutilización con anclas y alias en YAML.
Modularización: Dividir la Configuración con !include
Cuando los archivos de configuración crecen, ni siquiera las anclas son suficientes para mantener el orden. Aquí es donde entran en juego directivas específicas de la aplicación, como !include, que es extremadamente popular en el ecosistema de Home Assistant.
Importante: !include no es parte del estándar YAML, pero es una extensión tan común que es esencial conocerla. Permite cargar el contenido de otro archivo YAML dentro del actual.
Ejemplo de !include en Home Assistant
automation: !include automations.yaml
script: !include scripts.yaml
scene: !include scenes.yamlAdapta las entradas existentes sin duplicarlas. Los archivos de automatizaciones y escenas contienen listas; el de scripts, un mapa. El archivo incluido no repite su clave padre. Las integraciones configuradas desde la interfaz no deben recuperarse copiando plataformas YAML antiguas.
Métodos No Estándar: Tags y Motores de Plantillas
Aquí es donde surge la confusión original. Muchas herramientas utilizan YAML como base, pero le añaden su propio motor de plantillas (o "templating") para procesar el archivo antes de interpretarlo como YAML puro. Esto permite una lógica más compleja, pero es específico de cada plataforma.
Home Assistant: variables y Jinja, no una etiqueta !var
Home Assistant no incorpora una etiqueta !var. El ejemplo anterior era incorrecto y se ha retirado. Las variables de scripts y automatizaciones se definen en los campos variables: admitidos y se consultan con Jinja en campos que aceptan plantillas. No todos los campos de un disparador admiten plantillas ni pueden leer una variable definida después en las acciones.
Ejemplo para un script individual en la vista YAML del editor de scripts:
alias: "Ejemplo de variable"
sequence:
- variables:
titulo_aviso: "Aviso de Home Assistant"
- action: persistent_notification.create
data:
title: "{{ titulo_aviso }}"
message: "Este valor procede de una variable del script."El ejemplo crea una notificación sin depender de un servicio de móvil. YAML define la estructura; Home Assistant evalúa la expresión Jinja durante la ejecución. Consulta la diferencia entre YAML y Jinja en Home Assistant.
Otros Ecosistemas: Ansible y GitHub Actions
Para ampliar la perspectiva, veamos cómo otras herramientas populares manejan la reutilización de valores:
- Ansible: Utiliza el motor de plantillas Jinja2. Las variables se definen en varios lugares (inventario, playbooks, archivos de variables) y se referencian con una sintaxis de doble llave:
{{ mi_variable }}. - GitHub Actions: Tiene su propio contexto de expresiones para acceder a variables, secretos y datos del flujo de trabajo. La sintaxis es
${{ secrets.MI_SECRETO }}o${{ inputs.nombre_parametro }}.
El orden de carga y evaluación depende de cada herramienta. No todas realizan sustituciones antes de analizar YAML: Home Assistant evalúa muchas plantillas durante la ejecución.
Tabla Comparativa de Métodos para Reutilizar Valores en YAML
Para resumir, he creado esta tabla que aclara cuándo usar cada método.
| Método | Sintaxis | Caso de Uso Principal | Compatibilidad |
|---|---|---|---|
| Anchors (&) y Aliases (*) | &ancla / *ancla | Reutilizar cualquier valor o bloque (escalares, listas, mapas) dentro de un mismo archivo YAML. | Estándar de YAML. Funciona en cualquier parser compatible (Kubernetes, Docker, etc.). |
| Directiva !include | !include nombre_archivo.yaml | Dividir una configuración grande en múltiples archivos más pequeños y manejables. | No estándar. Depende de la aplicación (muy común en Home Assistant). |
| Tags/Plantillas Específicas | {{ variable }}, ${{ contexto }} | Acceder a variables dinámicas, secretos o realizar sustituciones complejas antes de la interpretación de YAML. | No estándar. Específico de cada herramienta (Home Assistant, Ansible, GitHub Actions). |
Beneficios de Reutilizar Valores en YAML
Independientemente del método que elijas (aunque te recomiendo encarecidamente empezar siempre con Anchors y Aliases), las ventajas son claras y universales:
- Reutilización de valores: El beneficio más obvio. Evita el copiar y pegar, reduciendo la probabilidad de errores.
- Mantenimiento simplificado: Cuando un valor compartido necesita cambiar (como una dirección IP, un token o un umbral), solo lo actualizas en un único lugar. Esto es una bendición en proyectos grandes.
- Mejora de la legibilidad: Al definir bloques de configuración comunes con un nombre descriptivo (usando un ancla, por ejemplo), el propósito del código se vuelve mucho más claro y auto-documentado.
Dominar estas técnicas no solo te hará más eficiente, sino que elevará la calidad y robustez de tus configuraciones, convirtiéndolas en proyectos mantenibles a largo plazo. La próxima vez que te enfrentes a un archivo YAML, recuerda que tienes herramientas potentes para mantenerlo limpio y organizado.
Seguridad: las anclas no protegen credenciales. La contraseña de Compose es ficticia, no una recomendación para publicar secretos. La clave de combinación depende del procesador y no fusiona recursivamente mapas anidados.
Continúa leyendo
Siguiente guía relacionada · 4 min de lectura
Variables de entorno YAML
Revisión técnica: 27 de octubre de 2026. Esta es una guía complementaria procedente del curso anterior, no un capítulo numerado del nuevo. Para seguir…
Continuar con este artículo

