¿Cómo gestionar múltiples recursos en Terraform con variables?
Gestionar múltiples recursos en Terraform puede complicarse rápidamente si no se implementan las mejores prácticas. Utilizar valores estáticos no es la solución eficiente cuando se trabaja con decenas de recursos. Aquí te mostraré cómo usar variables para mantener flexibilidad y escalabilidad en tus despliegues.
¿Por qué usar variables en Terraform?
Las variables permiten dar valores dinámicos a atributos como nombres de recursos. Esto es crucial para mantener la escalabilidad y adaptabilidad de tus configuraciones en Terraform. Al hacerlo, te evitas la rigidez de configurar manualmente cada recurso, lo cual no es viable si planeas desplegar un número elevado de estos.
¿Cómo se implementan las variables en Terraform?
Definición de la variable: Usa el bloque de código en VS Code que despliega un recurso y cámbiale el nombre por uno variable. Terraform te ofrece extensiones y snippets para esto.
Al ejecutar, Terraform hereda el valor de la variable desde su declaración.
¿Cómo automatizar la asignación de variables?
Cuando gestionas varios recursos, escribir manualmente cada variable en el terminal es inviable. Aquí entra el uso de archivos tfvars.
Crear un archivo variables.tf: Centraliza tus variables aquí.
Asegúrate de que el nombre del archivo sea exactamente variables.tf para que Terraform lo reconozca.
Crear un archivo terraform.tfvars:
Añade las variables que utilizarás directamente en los comandos de Terraform.
rg_nombre="mi_primer_grupo_variable"
Evitar subir información sensible: Este archivo debe añadirse a .gitignore para nunca subirlo al control de versiones, protegiendo así información confidencial.
¿Cómo mejorar la organización de tus proyectos?
Es relevante considerar un archivo muestra terraform.tfvars.sample:
Este archivo servirá como plantilla guía para los que accedan a tu proyecto en el control de versiones.
Describe las variables necesarias y su estructura, ayudando a otros a entender las configuraciones requeridas.
Consejos finales
Mientras más practiques el uso de variables y archivos de configuración, más intuitivo se volverá el proceso.
Crea una estructura lógica y organizada con archivos dedicados para las diferentes partes de tu proyecto en Terraform.
Jamás comprometas archivos con información sensible; el uso de .gitignore es esencial para mantener la seguridad de tu proyecto.
Estas prácticas no solo facilitan el mantenimiento de tus proyectos, sino que también mejoran mucho su escalabilidad y seguridad. ¡No hay mejor momento que ahora para empezar a practicar y automatizar tu flujo de trabajo en Terraform!
# Archivos generados por Terraform que no deberían estar en el control de versiones
.terraformrc
terraform.rc
Aquí un pequeño gráfico que representa la asignación y lectura de variables.
Las variables en Terraform te permiten parametrizar y reutilizar la configuración de tu infraestructura, haciendo tus plantillas más flexibles y fáciles de mantener. A continuación, se describen algunos aspectos clave:
Declaración de Variables
Bloque de variable: Puedes declarar una variable en un bloque variable en un archivo (por ejemplo, variables.tf):variable "nombre_grupo" {
description = "Nombre del grupo de recursos"
type = string
default = "mi-grupo-de-recursos"
}
Sin valor por defecto: Si no defines un valor por defecto, Terraform solicitará el valor durante la ejecución de terraform apply o terraform plan, a menos que lo pases mediante otros métodos.
Uso de Variables en la Configuración
Para utilizar una variable en tus recursos, la llamas con la sintaxis var.nombre_variable:resource "azurerm_resource_group" "ejemplo" {
name = var.nombre_grupo
location = "East US"
}
Métodos para Asignar Valores a Variables
Valores por defecto: Como se mostró en el ejemplo, las variables pueden tener un valor por defecto.
Archivos.tfvars: Puedes crear un archivo (por ejemplo, terraform.tfvars) en el que definas los valores:nombre_grupo = "grupo-personalizado"
Variables de entorno: Terraform también reconoce variables de entorno con el prefijo TF_VAR_. Por ejemplo, para la variable nombre_grupo:export TF_VAR_nombre_grupo="grupo-entorno"
Línea de comandos: Puedes pasar variables directamente en la línea de comandos usando el parámetro -var:terraform apply -var="nombre_grupo=grupo-linea-comando"
Ventajas de Usar Variables
Reusabilidad: Permiten reutilizar configuraciones para diferentes entornos (desarrollo, pruebas, producción) sin duplicar código.
Flexibilidad: Facilitan la modificación de parámetros sin alterar el código base de la infraestructura.
Organización: Ayudan a centralizar la configuración de parámetros, haciendo que el código sea más limpio y fácil de entender.
En resumen, las variables en Terraform son fundamentales para escribir código modular, adaptable y escalable, facilitando el manejo de diferentes entornos y escenarios en la gestión de infraestructura como código.
Aquí pueden generar un gitignore para terraform automáticamente, solo escriben terraform y cualquier otra herramienta que esten usando y les genera el gitignore:
Para aprender Terraform, es recomendable tener conocimientos previos en los siguientes temas:
Fundamentos de la nube: Comprender los conceptos de IaaS, PaaS y SaaS, así como la arquitectura de la nube y sus servicios.
Microsoft Azure o AWS: Familiarizarse con al menos uno de estos proveedores de servicios en la nube, ya que Terraform se utiliza para gestionar recursos en ellos.
Infraestructura como Código (IaC): Entender los principios de IaC y su importancia en la gestión de la infraestructura.
Los cursos que has completado en Platzi, como el de Fundamentos de Microsoft Azure, son un buen punto de partida.
Evito el uso del insumo (terraform.tfvars.sample) y a mis repositorios subo el insumo (variables.tf), es una buena practica donde adicionalmente indico el tipado de las variables y una descripción del valor que deben asociar con la variable: