Terraform para equipos

por Raul De La RosaAgosto 12, 20203 minutos

Prerrequisitos

Introducción

En esta guía configuraremos estado remoto con Terraform. Terraform por defecto maneja el estado de los recursos en archivos locales. Cuando se quiere trabajar en equipo, es necesario que estos archivos se encuentren disponibles en un servicio externo y siempre actualizados con los últimos cambios. Uno de esos servicios externos es Google Cloud Storage. Puedes descargar el código fuente de esta guía aquí.

Si prefieres una introducción a cómo configurar Terraform por primera vez, te recomiendo el artículo Configura una Google Cloud Function con Terraform.

Crea un bucket

El estado remoto será almacenado en un bucket en Google Cloud Storage. Este bucket debe existir antes de inicializar Terraform. Ingresa a la consola de Google Cloud - Storage y selecciona "Create Bucket".

c09f6e image01 create bucket step01

Ingresa el nombre del bucket y selecciona "continuar". Recuerda que el nombre del bucket debe ser único.

c09f6e image02 create bucket step02

Selecciona la ubicación y haz click en "Create".

c09f6e image03 create bucket step03

Una vez creado, verás la pantalla de detalles del Bucket como se muestra a continuación:

c09f6e image04 create bucket step04

Crea la configuración de Terraform

Agrega un archivo main.tf con el siguiente contenido:

# Proveedor
provider "google" {
  version = "3.32.0"

  # ID del proyecto en GCP
  project = "<PROJECT_ID>"  region  = "us-central1"
  zone    = "us-central1-c"
}

terraform {
  backend "gcs" {
    # Nombre del bucket, debe ser único
    bucket  = "tf-remote-state-dh-prod"    prefix  = "terraform/state"
  }
}

En la línea 6 reemplaza <PROJECT_ID> por el ID de tu proyecto. En línea 14 asegúrate de tener el nombre correcto de tu bucket.

Inicializa Terraform

Terraform se autenticará usando las credenciales asignadas a la variable de entorno GOOGLE_APPLICATION_CREDENTIALS. Para más información haz click aquí.

Ejecuta terraform init. Verás una pantalla como la siguiente:

c09f6e image05 terraform init

Verifica que el estado de Terraform se encuentre en el Bucket

Ingresa a la consola de Google Cloud Storage, selecciona tu bucket y revisa su contenido. Verás un archivo como el siguiente:

c09f6e image06 state in bucket

Opcional: Verifica el estado compartido

Agrega un topic al final de main.tf:

resource "google_pubsub_topic" "sample_topic" {
  name = "sample-topic"
}

Aplica los cambios con terraform apply

Ahora simularemos un usuario nuevo haciendo checkout del mismo código. Inicializa Terraform con terraform init. Si ejecutas terraform state list verás el topic creado.

c09f6e image09 terraform state test

Opcional: Destruye los recursos creados

Elimina el topic con terraform destroy. Ingresa a la consola y elimina el bucket del estado de Terraform.