Crea una configuración de Terraform

Cuando seleccionas soluciones del catálogo de servicios para tu organización, puedes crear una configuración de Terraform, o configuración, que los usuarios implementan mediante Terraform. Después de crear la configuración, puedes compartirla con los usuarios mediante la asignación a catálogos.

En esta guía, usas Cloud Build para ejecutar comandos de Terraform en la última versión de la imagen de Docker de Terraform y Cloud Storage a fin de almacenar y Administrar recursos de Terraform, como módulos y archivos de estado.

Para obtener recursos y orientación sobre el uso de Terraform, consulta Usa Terraform con Google Cloud.

Antes de comenzar

  • Debes tener las siguientes funciones de Identity and Access Management (IAM):

    • Catalog Admin (roles/cloudprivatecatalogproducer.admin) O Catalog Manager (roles/cloudprivatecatalogproducer.manager) para el proyecto de Google Cloud en el que el catálogo de servicios está habilitado.
    • Storage Admin (roles/storage.admin) del proyecto en el que el catálogo de servicios está habilitado.
    • Editor de Cloud Build (roles/cloudbuild.builds.editor) del proyecto en el que deseas crear la solución.

      Si no tienes estas funciones, comunícate con el administrador de tu organización para solicitar acceso.

  • Configura Cloud Build en el proyecto en el que creas la configuración:

    1. Enable the Cloud Build API.

      Enable the API

      Si habilitas la API, se crea de forma automática una cuenta de servicio de Cloud Build que usarás en el siguiente paso.

    2. Otorga las siguientes funciones de IAM a la cuenta de servicio:

      Si deseas obtener los pasos para otorgar funciones, consulta Configura el acceso a la cuenta de servicio de Cloud Build.

Sube tus archivos de configuración a Cloud Storage

Usa Cloud Storage a fin de administrar tus archivos de configuración de Terraform para el catálogo de servicios.

Crea un bucket de Cloud Storage

Si deseas configurar Cloud Storage, crea un bucket en el mismo proyecto en el que habilitaste el catálogo de servicios para tu organización:

  1. In the Google Cloud console, go to the Cloud Storage Buckets page.

    Go to Buckets page

  2. Click Create bucket.
  3. On the Create a bucket page, enter your bucket information. To go to the next step, click Continue.
    • For Name your bucket, enter a name that meets the bucket naming requirements.
    • For Choose where to store your data, do the following:
      • Select a Location type option.
      • Select a Location option.
    • For Choose a default storage class for your data, select a storage class.
    • For Choose how to control access to objects, select an Access control option.
    • For Advanced settings (optional), specify an encryption method, a retention policy, or bucket labels.
  4. Click Create.

Habilita el control de versiones de objetos

Debes usar el control de versiones de objetos en tu bucket para evitar que se borre o reemplace tu configuración de Terraform. Para habilitar el control de versiones de objetos, consulta la documentación de Cloud Storage sobre cómo usar el control de versiones de objetos.

Otorga acceso a tu bucket

Cuando los usuarios de tu organización implementan la configuración, su cuenta de servicio de Cloud Build debe tener acceso de lectura al bucket. Si el bucket está almacenado en el mismo proyecto de Cloud en el que los usuarios implementan la configuración, la cuenta de servicio ya tiene este acceso.

Si tus usuarios implementan la configuración en un proyecto de Cloud diferente, otorga acceso al bucket mediante uno de los siguientes métodos:

  • Otorga la función visualizador de objetos de almacenamiento (roles/storage.objectViewer) a las cuentas de servicio de Cloud Build de los usuarios o a un recurso de Google Cloud en el que los usuarios implementan la configuración de Terraform, como un proyecto, una carpeta o una organización.

  • Usa una Lista de control de acceso (LCA) para administrar el acceso al bucket.

Si deseas obtener detalles sobre cómo administrar el acceso a los buckets, consulta la Descripción general del control de acceso de Cloud Storage.

Crea y sube un módulo de Terraform

Después de configurar tu bucket de Cloud Storage, debes crear y subir un módulo de Terraform, que es un contenedor de todos tus archivos de configuración. El catálogo de servicios usa el módulo para generar automáticamente un archivo de esquema JSON a fin de definir las variables de tu configuración.

Cuando llames a los módulos fuera del directorio actual, usa la ruta remota en lugar de una relativa. Por ejemplo, en lugar de source = "../../", usa source = "GoogleCloudPlatform/cloud-run/google".

Para ver los módulos de casos de uso comunes de Google Cloud, consulta Cloud Foundation Toolkit.

En la siguiente muestra de código, se ilustra un archivo de configuración de Terraform, main.tf:


variable "machine_type" {
  type    = string
  default = "n1-standard-1"
}

variable "zone" {
  type    = string
  default = "us-central1-a"
}

variable "deployment_identifier" {
  description = "The unique name for your instance"
  type        = string
}

resource "google_compute_instance" "default" {
  name         = "vm-${var.deployment_identifier}"
  machine_type = var.machine_type
  zone         = var.zone

  boot_disk {
    device_name = "boot"
    auto_delete = true
    initialize_params {
      image = "debian-cloud/debian-11"
    }
  }

  network_interface {
    network = "default"
    access_config {
      // Ephemeral IP
    }
  }
}

Después de crear tu módulo, comprime los archivos en un archivo ZIP. Asegúrate de que el módulo esté almacenado en la raíz del archivo ZIP.

Para garantizar un almacenamiento adecuado del módulo cuando comprimas tus archivos de Terraform, ejecuta el siguiente comando: zip solution.zip file1.tf file2.tf file3.tf

Luego, sube el archivo ZIP al bucket. Si quieres conocer los pasos para subir el archivo ZIP, consulta la documentación de Cloud Storage sobre cómo subir objetos.

Crea la configuración en el catálogo de servicios

Después de configurar un bucket de Cloud Storage con tu módulo de Terraform, crea una solución del catálogo de servicios que incluya el bucket.

Para crear la configuración de Terraform como solución del catálogo de servicios, sigue estos pasos:

  1. Ve a la página Soluciones del administrador del catálogo de servicios en Cloud Console.
    Ir a la página Soluciones

  2. Haz clic en Seleccionar para elegir el proyecto de Google Cloud.

  3. Haz clic en CREAR SOLUCIÓN. En la lista desplegable, selecciona Crear una configuración de Terraform.

  4. Ingresa un nombre, una descripción y un eslogan para tu configuración de Terraform. El eslogan es una descripción breve de una solución que los usuarios ven cuando exploran el catálogo de servicios.

  5. En el campo Vínculo a la configuración de Terraform, proporciona el vínculo al bucket de Cloud Storage que contiene el archivo ZIP para el módulo de Terraform, como gs://my-terraform-bucket/my-zip-file.zip.

  6. De manera opcional, sube un ícono para la solución. Las dimensiones recomendadas para un ícono son de 80 por 80 píxeles.

  7. Opcionalmente, ingresa un vínculo de asistencia y la información de contacto del creador.

  8. De manera opcional, agrega un vínculo a la documentación para la solución.

  9. Selecciona la versión de Terraform que deseas usar para implementar la solución.

  10. Haga clic en CREAR.

La solución se crea y aparece en la página Soluciones del administrador del catálogo de servicios.

En la siguiente captura de pantalla, se muestra cómo crear una configuración de Terraform:

Crea una configuración de Terraform

Próximos pasos