Desplegar tu base con Terraform descargado desde la consola

Google Cloud Configuración ayuda a los administradores a configurar una Google Cloud base mediante un proceso guiado y a desplegarla directamente desde la Google Cloud consola o descargarla como Terraform.

Este documento te ayuda a desplegar tu archivo de configuración de Terraform. Google Cloud

Antes de empezar

Consulta las prácticas recomendadas para usar Terraform, que incluyen directrices para desarrollar de forma eficaz con Terraform entre los miembros del equipo y los flujos de trabajo.

Si ya has desplegado la configuración de la base haciendo clic en el botón Desplegar de la consola y ahora quieres desplegar una configuración de Terraform descargada mediante tu propia canalización, debes hacer lo siguiente:

  • Descarga el archivo de estado de Terraform que ha generado la consola.
  • Incluye el archivo de estado descargado en tu propio proceso de la canalización.

Para obtener más información, consulta Implementar Terraform descargado después de implementar desde la consola.

Desplegar Terraform con Cloud Shell

Cloud Shell incluye Terraform preinstalado y preautenticado, por lo que puedes empezar a usarlo rápidamente.

  1. En la guía de configuración de la consola, haz clic en Descargar como Terraform y guarda la configuración.
  2. Abre Cloud Shell.
  3. En Cloud Shell, crea un directorio y ve a él:

    mkdir cloud-foundation-example && cd cloud-foundation-example
    
  4. Sube la configuración de Terraform que has descargado en el paso 1.

    En el menú Más de Cloud Shell, selecciona Subir y, a continuación, haz clic en Elegir archivos para seleccionar la configuración de Terraform. Define el directorio de destino en la carpeta que has creado en el paso anterior y, a continuación, haz clic en Subir.

  5. Asegúrate de que estás en el directorio cloud-foundation-example.

  6. Crea un segmento de Cloud Storage para almacenar el estado remoto de Terraform. Un estado remoto permite que Terraform use almacenes de objetos, como Cloud Storage, para almacenar información de estado sobre la infraestructura gestionada por Terraform. Esta configuración ofrece ventajas como la delegación de equipos y el bloqueo de estados.

    Para crear el segmento de Cloud Storage, ejecuta el siguiente comando:

    gcloud storage buckets create gs://tf-state-PROJECT_ID
    
  7. Define una configuración de backend de Terraform en un archivo backend.tf y sustituye PROJECT_ID para que coincida con el ID de proyecto que has usado en el paso anterior. Para obtener más información, consulta el artículo sobre almacenar el estado de Terraform en Cloud Storage.

    # backend.tf
    terraform {
          backend "gcs" {
            bucket  = "tf-state-PROJECT_ID"
            prefix  = "terraform/state"
          }
    }
    
  8. Ejecuta terraform init. Este proceso inicializa el directorio de trabajo que contiene los archivos de configuración de Terraform y el backend.

  9. Ejecuta terraform plan para ver los recursos que crea Terraform. Ejemplo:

    ...
    Plan: 6 to add, 0 to change, 0 to destroy.
    Note: You didn't use the -out option to save this plan, so Terraform can't
    guarantee to take exactly these actions if you run "terraform apply" now.
    

  10. Aplica la configuración ejecutando terraform apply, que implementa tus recursos enGoogle Cloud. Cuando se te solicite, introduce yes.

  11. Explora la Google Cloud consola para verificar que tus recursos se han desplegado en tu cuenta o proyecto.

Volver a desplegar Terraform con Cloud Shell

Terraform almacena información sobre los recursos implementados en el archivo de estado de Terraform. Si has seguido los pasos anteriores para implementar tu configuración, te recomendamos que reutilices el mismo backend para detectar, eliminar y actualizar automáticamente los recursos definidos por la nueva configuración exportada.

  1. En la guía de configuración de la consola, haz clic en Descargar como Terraform y guarda la configuración.
  2. Abre Cloud Shell.
  3. En Cloud Shell, crea un directorio y ve a él:
    mkdir cloud-foundation-example-redeploy && cd cloud-foundation-example-redeploy
    
  4. Sube la configuración de Terraform que has descargado en el paso 1.

    En el menú Más de Cloud Shell, selecciona Subir y, a continuación, haz clic en Elegir archivos para seleccionar la configuración de Terraform. Define el directorio de destino como la carpeta que creaste en el paso anterior y, a continuación, haz clic en Subir.

  5. Asegúrate de que estás en el directorio cloud-foundation-example-redeploy.

  6. Asegúrate de que existen el segmento de backend de Cloud Storage y el archivo de estado que has creado anteriormente.

    gcloud storage ls gs://tf-state-PROJECT_ID/terraform/state/
    
    Ejemplo:
    gs://tf-state-PROJECT_ID/terraform/state/default.tfstate
    

  7. Define una configuración de backend de Terraform en un archivo backend.tf reutilizando el mismo prefijo y el mismo prefijo.

    # backend.tf
    terraform {
          backend "gcs" {
            bucket  = "tf-state-PROJECT_ID"
            prefix  = "terraform/state"
          }
    }
    
  8. Ejecuta terraform init. Este proceso inicializa el directorio de trabajo que contiene los archivos de configuración de Terraform y el backend.

  9. Ejecuta terraform plan para ver los recursos que Terraform crea, cambia o destruye. Ejemplo:

    ...
    Plan: 2 to add, 3 to change, 4 to destroy.
    Note: You didn't use the -out option to save this plan, so Terraform can't
    guarantee to take exactly these actions if you run "terraform apply" now.
    

  10. Aplica la configuración ejecutando terraform apply, que implementa tus recursos enGoogle Cloud. Cuando se te solicite, introduce yes.

  11. Explora la Google Cloud consola para comprobar que tus recursos se han desplegado en tu cuenta o proyecto.

Desplegar Terraform descargado después de desplegarlo desde la consola

Si ya has implementado la configuración básica con el botón Implementar de la consola, se habrá generado un archivo de estado de Terraform. Si ahora quieres descargar la configuración de Terraform para desplegarla con tu propia canalización, debes incluir el archivo de estado de Terraform que se generó durante el despliegue de la consola.

Para descargar y usar el archivo de estado, sigue estos pasos:

  1. Para descargar el archivo de estado de Terraform, sigue los procedimientos que se indican en Gestionar el archivo de estado de Terraform:

    1. Bloquea la implementación.
    2. Descarga el archivo de estado.
    3. Desbloquea la implementación.
  2. Para mover el archivo de estado que has descargado a un segmento de Cloud Storage, consulta Almacenar el estado de Terraform en un segmento de Cloud Storage.

  3. Para volver a implementar la configuración de Terraform, consulta Volver a implementar Terraform con Cloud Shell.

Solucionar problemas de despliegues de Terraform

Desplegar Terraform con recursos disponibles

Si la configuración de Terraform descargada intenta crear recursos que ya existen, Terraform se cierra con un código de error 409. Para resolver estos errores, puedes eliminar el recurso mediante laGoogle Cloud consola o la CLI de gcloud y, a continuación, volver a aplicar la configuración de Terraform. Por otra parte, si estos recursos son críticos y no se pueden eliminar, puedes importarlos a tu estado de Terraform.

Gestionar la infraestructura como código con Terraform, Cloud Build y GitOps

Te recomendamos que sigas este tutorial para obtener instrucciones completas. Esta opción está dirigida a administradores y operadores de plataformas que buscan una estrategia para hacer cambios en la infraestructura de forma predecible y repetida. En esta guía se da por hecho que tienes conocimientos sobre Google Cloud, Linux y GitHub. Estos son los pasos generales de esta opción:

  1. Configura tu repositorio de GitHub.
  2. Configura Terraform para almacenar el estado en un segmento de Cloud Storage.
  3. Concede permisos a tu cuenta de servicio de Cloud Build.
  4. Conecta Cloud Build a tu repositorio de GitHub.
  5. Cambia la configuración del entorno en una rama de función.
  6. Promocionar los cambios al entorno de desarrollo.
  7. Promociona los cambios al entorno de producción.