El bloque locals en Terraform funciona como un híbrido entre variable y constante: le asignas un valor que, una vez ejecutado, se vuelve inmutable. Es ideal para añadir prefijos consistentes a tus recursos sin tener que repetir el mismo texto en cada campo.
¿Qué es el bloque locals en Terraform?
Un local es un valor con nombre que defines una sola vez dentro de tu configuración y reutilizas a lo largo de todo el script. A diferencia de una variable, no puedes modificarlo en tiempo de ejecución, lo que lo convierte en una pieza segura para mantener nombres consistentes.
¿Cuál es la diferencia entre variable y locals en Terraform? Una variable puede recibir valores externos al ejecutar Terraform; un local se calcula una vez y queda fijo durante la ejecución, así que es perfecto para concatenar prefijos o construir nombres derivados.
¿Para qué sirven los locals en la práctica?
El uso más común es estandarizar nombres. En el ejercicio se añadió el prefijo amin-es a un resource group, pero la misma idea aplica para entornos de trabajo como dev, test o production.
- Añadir prefijos o sufijos a recursos.
- Definir nombres de entornos (dev, test, prod).
- Construir cadenas concatenadas a partir de variables.
¿Cómo crear un bloque locals paso a paso?
La estructura es sencilla y se integra dentro de tu archivo main.tf. Antes de escribirlo, vale la pena recordar un truco que aparece en la clase: no siempre necesitas declarar el bloque required_providers junto al provider. Si solo trabajas con Azure RM, puedes ahorrarte líneas y declarar únicamente el provider, aunque lo ideal sigue siendo incluir required_providers para mantener buenas prácticas.
¿Cómo se escribe la sintaxis de locals?
Dentro de tu main.tf, después de la variable que vas a usar, abre un bloque locals (en plural) y define las llaves que necesites:
hcl
variable "rgNombre" {
type = string
default = "Grupo resource"
}
locals {
group_name = "amin-es-${var.rgNombre}"
}
resource "azurerm_resource_group" "rg" {
name = local.group_name
location = "Mexico Central"
}
Fíjate en un detalle clave: el bloque se llama locals en plural, pero cuando lo invocas usas local en singular, como en local.group_name. Si lo escribes al revés, Terraform te lanzará un error.
¿Por qué locals es plural pero local es singular al usarlo? Porque el bloque agrupa varios valores locales, mientras que la referencia apunta a uno específico dentro de ese grupo.
¿Cómo se ejecuta y valida el resultado?
Desde la terminal, navegas a la carpeta del proyecto y corres los comandos básicos. El flujo del ejercicio fue así:
cd locals para entrar a la carpeta del proyecto.
terraform init para inicializar el directorio.
terraform plan -out plan.out para generar el plan.
Cuando la variable tiene un valor por defecto, Terraform usa ese valor sin preguntar. Si eliminas el default, Terraform te pedirá el valor al momento del plan. En el ejercicio se ingresó Grupo Platzi, y el resultado mostró el nombre concatenado como amin-es-Grupo Platzi, confirmando que el local aplicó el prefijo correctamente.
¿Por qué combinar locals con módulos CAF?
Cuando trabajas con módulos como CAF (Cloud Adoption Framework) de Azure, los locals se vuelven aún más útiles para mantener convenciones de nombres uniformes a lo largo de todos los recursos. La frase que resume bien la idea: locals y CAF son una combinación tan buena como café con leche.
Usar locals desde el principio es un hábito que vale la pena cultivar. Te ahorra errores, centraliza decisiones de nomenclatura y hace que tu código sea más legible para quien venga detrás de ti. ¿Ya tienes claro dónde aplicarlo en tu próximo script? Cuéntame en los comentarios qué prefijos sueles usar tú.