Uso del bloque Locals en Terraform para gestionar prefijos

Clase 27 de 37Curso de Terraform

Resumen

¿Qué es el bloque locals en Terraform?

El mundo de la orquestación de infraestructuras a través de Terraform ofrece diversas herramientas que facilitan el trabajo de desarrolladores y operadores. Una de ellas es el bloque locals, el cual es altamente funcional y sencillo de implementar. Este bloque se puede definir como un híbrido entre una variable y una constante. Una vez que Terraform se ejecuta, el valor definido en un bloque locals se vuelve inmutable, permitiendo reutilizar nombres y prefijos de manera eficiente sin tener que actualizar cada campo de un archivo de configuración.

¿Cómo se utiliza el bloque locals para prefijar nombres?

Por ejemplo, si se está creando una máquina virtual y deseas que todos los recursos relacionados comiencen con el prefijo "Mines", el bloque locals se convierte en la solución perfecta. Esto se logra definiendo un prefijo constante en el bloque locals, de modo que este valor se concatenará automáticamente, asegurando consistencia y simplicidad en el manejo de nombres.

Ejemplo práctico

Para implementar un bloque locals que establezca un prefijo constante, sigue estos pasos:

  1. Crea una carpeta llamada locals en tu repositorio de Terraform.

  2. Dentro de esta carpeta, crea un archivo llamado main.tf.

  3. Añade un proveedor básico, como el proveedor de Azure RM:

    provider "azurerm" {
      features {}
    }
    
  4. Define una variable para el nombre de grupo de recursos en el mismo archivo:

    variable "rg_name" {
      type    = string
      default = "AminEspinosaGrupo"
    }
    
  5. Crea el bloque locals para definir el prefijo:

    locals {
      def_name = "AminES-${var.rg_name}"
    }
    
  6. Asocia el nombre del grupo de recursos usando el valor de locals:

    resource "azurerm_resource_group" "example" {
      name     = "${local.def_name}"
      location = "Central Mexico"
    }
    

¿Cómo interactúa el bloque locals con variables al momento de ejecutar Terraform?

Los bloques locals son transparentes con las variables, lo que permite una ejecución fluida. Si tienes una variable sin un valor por defecto, Terraform te solicitará ese valor al momento de crear o planear los recursos. Este valor será combinado con el prefijo definido en locals al crear el recurso.

Proceso de ejecución

  1. Inicialización del directorio: Entra al directorio locals y ejecuta terraform init para preparar el entorno.
  2. Plan de implementación: Ejecuta terraform plan -out plan.out para verificar la configuración y observar cómo se generará el nombre con el prefijo.
  3. Definición de valores: Si la variable no tiene un valor predeterminado, Terraform te pedirá ingresarlo, como por ejemplo GrupoPlatzi.

El resultado del proceso mostrará que el nombre del grupo de recursos se crea con el prefijo definido en locals, evitando duplicidad y errores humanos en la definición manual de cada recurso:

  • Prefijo resultado: AminES-GrupoPlatzi

¿Cuáles son las ventajas de usar el bloque locals?

Adoptar el uso del bloque locals aporta grandes beneficios:

  • Consistencia: Los nombres de los recursos se formatean de manera uniforme.
  • Seguridad: Minimiza errores al reducir la necesidad de modificar manualmente nombres en múltiples ubicaciones.
  • Flexibilidad: Permite definir parámetros reutilizables sin necesidad de modulos externos.
  • Eficiencia: Simplifica la orquestación de infraestructuras en diferentes entornos (desarrollo, pruebas, producción).

Implementar este bloque es una práctica recomendada y extremadamente útil. Si bien puede parecer simple, su uso constante puede fortalecer tus habilidades en Terraform, similar a integrar cafés y módulos en tus práctica diaria.