Terraform para equipos
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".
Ingresa el nombre del bucket y selecciona "continuar". Recuerda que el nombre del bucket debe ser único.
Selecciona la ubicación y haz click en "Create".
Una vez creado, verás la pantalla de detalles del Bucket como se muestra a continuación:
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:
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:
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.
Opcional: Destruye los recursos creados
Elimina el topic con terraform destroy
. Ingresa a la consola y elimina el bucket del estado de Terraform.