Variables en Terraform

Introducción

A medida que tu infraestructura crece, es fundamental hacer tu código Terraform más dinámico y reutilizable. Las variables son esenciales para lograr esto, permitiéndote cambiar fácilmente configuraciones sin necesidad de editar múltiples archivos.


¿Qué son las variables en Terraform?

Las variables en Terraform funcionan como parámetros que puedes definir y reutilizar en tus configuraciones, facilitando la adaptación de la infraestructura a diferentes entornos y escenarios.

Definición de variables

Para definir una variable, crea un archivo llamado variables.tf y especifica la variable de la siguiente manera:

variable "region" {
  description = "Región donde se desplegarán los recursos"
  default     = "us-east-1"
}

variable "instance_type" {
  description = "Tipo de instancia EC2"
  default     = "t2.micro"
}

Uso de variables

Una vez definidas, utiliza las variables en tu configuración así:

provider "aws" {
  region = var.region
}

resource "aws_instance" "ejemplo" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = var.instance_type
}

Asignar valores a variables

Existen varias formas de asignar valores a variables:

1. Archivo terraform.tfvars

Crea un archivo terraform.tfvars para asignar valores fácilmente:

region        = "us-west-2"
instance_type = "t3.small"

2. Variables de entorno

También puedes definir variables usando variables de entorno:

export TF_VAR_region="us-west-2"
export TF_VAR_instance_type="t3.small"

3. Línea de comandos

Puedes asignar valores directamente en la línea de comandos:

terraform apply -var="region=us-west-2" -var="instance_type=t3.small"

Variables sensibles

Para datos sensibles como contraseñas o claves, usa el atributo sensitive para evitar su visualización en logs:

variable "db_password" {
  description = "Contraseña de la base de datos"
  sensitive   = true
}

Usar variables en Terraform mejora significativamente la reutilización, flexibilidad y seguridad de tu infraestructura. En el siguiente post, profundizaremos en cómo estructurar tu código utilizando módulos para optimizar la organización y escalabilidad. ¡Nos vemos en la siguiente entrega!