Contenido del curso

Módulos en Terraform

Nombres únicos en Azure con CAF provider

Resumen

Separar el código de Terraform en archivos con propósito específico y aprovechar el proveedor Azure CAF te permite escalar proyectos de infraestructura como código sin perder claridad ni inventar nombres a mano. Aquí verás cómo estructurar provider.tf, main.tf y outputs.tf, y cómo generar nombres únicos para tus recursos en Azure de forma automática.

¿Por qué separar provider, main y outputs en Terraform?

Cuando un proyecto crece, dejar todo en un solo main.tf se vuelve un dolor de cabeza. La idea es darle a cada archivo un rol claro para que tú y tu equipo encuentren rápido lo que buscan.

¿Qué va en cada archivo de configuración?

La convención que aplicamos parte del ejercicio de almacenamiento copiado a una nueva carpeta llamada Proveedores [01:00]. Desde ahí extraemos el bloque del proveedor a su propio archivo y movemos las salidas a otro.

  • provider.tf: declara los proveedores que vas a utilizar, como azurerm y azurecaf.
  • main.tf: contiene únicamente los recursos que vas a desplegar.
  • outputs.tf: guarda los valores de salida que quieres exponer al final del despliegue.

Con esa división, abrir el proyecto se siente como abrir un libro con índice. Cada cosa en su lugar.

¿Es obligatorio separar los archivos en Terraform? No es obligatorio, pero Terraform lee todos los archivos .tf del directorio como si fueran uno solo. Separarlos mejora la mantenibilidad sin cambiar el comportamiento.

¿Cómo verificar que la nueva estructura funciona?

Antes de tocar nada más, conviene confirmar que la reorganización no rompió el proyecto. Te mueves a la carpeta nueva y ejecutas la inicialización.

  • cd proveedores para entrar al folder.
  • terraform init para inicializar el directorio [02:30].
  • terraform plan para validar sin aplicar cambios.

Si ves que se crearían dos recursos y un output, todo está en orden. No necesitas correr apply todavía porque el objetivo es solo comprobar la estructura.

¿Qué es Azure CAF y cómo se agrega como proveedor?

Azure CAF significa Cloud Adoption Framework, y es un proveedor adicional que genera nombres únicos para tus recursos siguiendo reglas específicas de Azure. Así dejas de inventar manualmente cómo llamar a cada resource group o storage account.

¿Qué hace el proveedor Azure CAF? Crea nombres aleatorios y válidos para recursos de Azure aplicando prefijos, sufijos y longitud que tú defines, respetando las reglas de cada tipo de recurso.

¿Cómo declarar Azure CAF en required_providers?

Dentro del bloque required_providers en provider.tf, debajo de azurerm, agregas la entrada de azurecaf indicando su fuente [03:30]. La fuente de azurerm es hashicorp/azurerm, mientras que la de azurecaf viene del módulo aztfmod/azurecaf.

Una vez declarado, cierras el archivo y pasas a main.tf para empezar a usarlo.

¿Cómo generar nombres dinámicos con azurecaf_name?

El recurso clave se llama azurecaf_name y se coloca como un bloque más dentro de main.tf. Cada bloque genera un nombre listo para asignar a un recurso real.

¿Cómo nombrar un resource group con CAF?

Creas un bloque azurecaf_name con el identificador rgname, le pasas un nombre base (por ejemplo aminze), defines el resource_type como resource group, agregas un prefijo dev y dos sufijos aleatorios con tres caracteres random [04:30].

Luego, en lugar de poner el nombre estático o usar var.resource_group_name, asignas azurecaf_name.rgname.result al campo name del grupo de recursos. Listo: el nombre se calcula solo.

¿Cómo aplicarlo a una storage account?

Repites el patrón con otro bloque azurecaf_name llamado storagename, indicando resource_type como azure storage account y un prefijo, sin sufijos en este caso. Después conectas azurecaf_name.storagename.result al name de la cuenta de almacenamiento, y el resource_group_name lo jalas directo del grupo de recursos previo.

¿Por qué necesitas reiniciar Terraform al agregar un proveedor?

Al correr terraform plan después de añadir azurecaf, Terraform avisa que la configuración requiere reinicializar el proyecto. Esto pasa porque incorporaste un proveedor nuevo que aún no está descargado.

  • Ejecutas terraform init otra vez.
  • Terraform reutiliza la versión previa de azurerm.
  • Descarga e integra azurecaf al backend.

Después de eso, terraform plan muestra cuatro recursos por crear: el azurecaf_name del grupo de recursos, el azurecaf_name de la storage, el resource group y la storage account [06:30]. Dos componentes de Azure y dos de Azure CAF.

¿Qué nombres genera Azure CAF al aplicar el plan?

Al correr terraform apply y confirmar con yes, los recursos de nombre se crean en menos de un segundo y luego se despliegan los recursos reales. El resultado tiene una forma muy concreta:

  • Resource group: dev-rg-aminze-XYZ con tres caracteres aleatorios.
  • Storage account: devstaminze más tres valores aleatorios al final.

Esos nombres respetan las reglas de cada servicio de Azure, son únicos y se generan sin que tú los pienses. Esa es la ganancia real: dejas de gastar energía mental decidiendo cómo llamar a cada recurso y la delegas al proveedor.

¿Ya empezaste a separar tus archivos de Terraform o sigues con todo en un solo main.tf? Cuéntame en los comentarios cómo organizas tus proyectos de infraestructura como código.