En este tema, aprenderemos sobre las variables y salidas en Terraform, que son fundamentales para crear configuraciones reutilizables y modulares. Las variables permiten parametrizar las configuraciones, mientras que las salidas facilitan la obtención de información de los recursos creados.

Variables en Terraform

¿Qué son las Variables?

Las variables en Terraform permiten parametrizar las configuraciones, haciendo que el código sea más flexible y reutilizable. Puedes definir valores que pueden ser reutilizados en múltiples lugares dentro de tu configuración.

Tipos de Variables

Terraform soporta varios tipos de variables:

  • String: Cadena de texto.
  • Number: Número.
  • Bool: Booleano (verdadero o falso).
  • List: Lista de valores.
  • Map: Mapa de pares clave-valor.
  • Set: Conjunto de valores únicos.

Definición de Variables

Las variables se definen en un archivo variables.tf o directamente en el archivo de configuración principal. Aquí hay un ejemplo de cómo definir diferentes tipos de variables:

variable "instance_type" {
  description = "Tipo de instancia de AWS"
  type        = string
  default     = "t2.micro"
}

variable "instance_count" {
  description = "Número de instancias"
  type        = number
  default     = 1
}

variable "enable_monitoring" {
  description = "Habilitar monitoreo"
  type        = bool
  default     = true
}

variable "allowed_ips" {
  description = "Lista de IPs permitidas"
  type        = list(string)
  default     = ["0.0.0.0/0"]
}

variable "tags" {
  description = "Etiquetas para los recursos"
  type        = map(string)
  default     = {
    "Environment" = "dev"
    "Project"     = "terraform-course"
  }
}

Uso de Variables

Para usar una variable en tu configuración, utiliza la sintaxis ${var.<variable_name>}. Aquí hay un ejemplo de cómo usar las variables definidas anteriormente:

resource "aws_instance" "example" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = var.instance_type
  count         = var.instance_count

  tags = var.tags

  monitoring = var.enable_monitoring

  network_interface {
    device_index = 0
    associate_public_ip_address = true
    subnet_id = "subnet-0bb1c79de3EXAMPLE"
    security_groups = ["sg-903004f8"]
  }
}

Asignación de Valores a Variables

Los valores de las variables pueden ser asignados de varias maneras:

  1. Archivo terraform.tfvars: Puedes crear un archivo terraform.tfvars para definir los valores de las variables.

    instance_type = "t2.medium"
    instance_count = 2
    enable_monitoring = false
    allowed_ips = ["192.168.1.0/24"]
    tags = {
      "Environment" = "production"
      "Project"     = "terraform-course"
    }
    
  2. Línea de Comando: Puedes pasar los valores de las variables directamente desde la línea de comando.

    terraform apply -var="instance_type=t2.medium" -var="instance_count=2"
    
  3. Variables de Entorno: Puedes usar variables de entorno para definir los valores de las variables.

    export TF_VAR_instance_type="t2.medium"
    export TF_VAR_instance_count=2
    

Salidas en Terraform

¿Qué son las Salidas?

Las salidas en Terraform permiten extraer información de los recursos creados y mostrarlas al final de la ejecución del plan de Terraform. Esto es útil para obtener datos como direcciones IP, nombres de recursos, etc.

Definición de Salidas

Las salidas se definen en un archivo outputs.tf o directamente en el archivo de configuración principal. Aquí hay un ejemplo de cómo definir salidas:

output "instance_id" {
  description = "ID de la instancia de AWS"
  value       = aws_instance.example.id
}

output "instance_public_ip" {
  description = "Dirección IP pública de la instancia"
  value       = aws_instance.example.public_ip
}

output "instance_private_ip" {
  description = "Dirección IP privada de la instancia"
  value       = aws_instance.example.private_ip
}

Uso de Salidas

Las salidas se muestran al final de la ejecución del plan de Terraform. También puedes acceder a las salidas utilizando el comando terraform output.

$ terraform output
instance_id = "i-0abcd1234efgh5678"
instance_public_ip = "54.123.45.67"
instance_private_ip = "10.0.1.123"

Ejercicio Práctico

Ejercicio 1: Definir y Usar Variables

  1. Crea un archivo variables.tf y define las siguientes variables:

    • region (string): Región de AWS.
    • instance_type (string): Tipo de instancia de AWS.
    • instance_count (number): Número de instancias.
  2. Crea un archivo main.tf y usa las variables definidas para crear una instancia de AWS.

Solución

variables.tf

variable "region" {
  description = "Región de AWS"
  type        = string
  default     = "us-west-2"
}

variable "instance_type" {
  description = "Tipo de instancia de AWS"
  type        = string
  default     = "t2.micro"
}

variable "instance_count" {
  description = "Número de instancias"
  type        = number
  default     = 1
}

main.tf

provider "aws" {
  region = var.region
}

resource "aws_instance" "example" {
  ami           = "ami-0c55b159cbfafe1f0"
  instance_type = var.instance_type
  count         = var.instance_count
}

Ejercicio 2: Definir y Usar Salidas

  1. Crea un archivo outputs.tf y define las siguientes salidas:
    • instance_id: ID de la instancia de AWS.
    • instance_public_ip: Dirección IP pública de la instancia.

Solución

outputs.tf

output "instance_id" {
  description = "ID de la instancia de AWS"
  value       = aws_instance.example.id
}

output "instance_public_ip" {
  description = "Dirección IP pública de la instancia"
  value       = aws_instance.example.public_ip
}

Conclusión

En esta sección, hemos aprendido sobre las variables y salidas en Terraform. Las variables nos permiten parametrizar nuestras configuraciones, haciéndolas más flexibles y reutilizables. Las salidas nos permiten extraer información útil de los recursos creados. Estos conceptos son fundamentales para crear configuraciones de Terraform eficientes y modulares. En el próximo tema, exploraremos los bloques de recursos y datos en Terraform.

© Copyright 2024. Todos los derechos reservados