En este instructivo, aprenderás a almacenar el estado de Terraform en un bucket de Cloud Storage.
De forma predeterminada, Terraform almacena el estado de manera local en un archivo llamado terraform.tfstate
. Esta configuración predeterminada puede dificultar el uso de Terraform para los equipos cuando varios usuarios ejecutan Terraform al mismo tiempo y cada máquina tiene su propia comprensión de la infraestructura actual.
Para ayudarte a evitar esos problemas, en esta página, se muestra cómo configurar un estado remoto que apunte a un bucket de Cloud Storage. El estado remoto es una característica de los backends de Terraform.
Costos
Cloud Storage genera costos por el almacenamiento, las operaciones de lectura y escritura, la salida de red y la replicación.
El bucket de Cloud Storage en este instructivo tiene habilitado el control de versiones de objetos para mantener el historial de tus implementaciones. Habilitar el control de versiones de objetos aumenta los costos de almacenamiento, lo cual se puede mitigar si configuras la Administración del ciclo de vida de los objetos para que borre versiones de estado antiguas.
Antes de comenzar
-
Asegúrate de tener los permisos de Cloud Storage necesarios en tu cuenta de usuario:
storage.buckets.create
storage.buckets.list
storage.objects.get
storage.objects.create
storage.objects.delete
storage.objects.update
Obtén más información sobre los roles y permisos.
Como práctica recomendada, sugerimos controlar el acceso al bucket y los archivos de estado almacenados allí. Solo un pequeño conjunto de usuarios (por ejemplo, el administrador principal de la nube y la persona que actúa como administrador alternativo o de respaldo) deben tener permisos de administrador para el bucket. Los otros desarrolladores deben tener permisos para escribir y leer objetos en el bucket.
- Cómo iniciar Cloud Shell
Cloud Shell es una máquina virtual de Compute Engine. Las credenciales de servicio asociadas a esta máquina virtual son automáticas, por lo que no es necesario configurar ni descargar una clave de cuenta de servicio.
- Habilita la API de Cloud Storage:
gcloud services enable storage.googleapis.com
Configura Terraform para almacenar el estado en un bucket de Cloud Storage
En los siguientes pasos, creas un bucket de Cloud Storage y cambias la configuración del backend a tu bucket nuevo y a tu proyecto de Google Cloud.
Crea el bucket
Agrega el siguiente recurso de Terraform
google_storage_bucket
a un archivo de configuración de Terraform, comomain.tf
.En el fragmento de código, el campo
location
está hard-coded comoUS
(lo que significa que se crea un bucket multirregional en US). Puedes cambiar este campo a una ubicación de tu elección.Ejecuta
terraform apply
para crear el bucket de almacenamiento.
Cambia la configuración del backend
Agrega el siguiente texto a un nuevo archivo de configuración de Terraform llamado
backend.tf
.terraform { backend "gcs" { bucket = "BUCKET_NAME" prefix = "terraform/state" } }
Asegúrate de actualizar BUCKET_NAME para que coincida con el nombre de tu bucket de Cloud Storage nuevo.
Ejecuta
terraform init
para configurar tu backend de Terraform.Terraform detecta que ya tienes un archivo de estado de forma local y te solicita que lo copies en el nuevo bucket de Cloud Storage. Ingresa
yes
.
Después de ejecutar este comando, el estado de Terraform se almacena en el bucket de Cloud Storage. Terraform extrae el estado más reciente de este bucket antes de ejecutar un comando y lo envía al bucket después de ejecutar un comando.
Próximos pasos
- Obtén información para administrar la infraestructura como código con Terraform, Cloud Build y GitOps.
- Obtén información sobre la validación de políticas.