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 versión más reciente de la imagen de Docker de Terraform y Cloud Storage para 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 los siguientes roles de Identity and Access Management (IAM):

    • Catalog Admin O Catalog Manager para la organizaciónGoogle Cloud asociada con el proyecto Google Cloud que tiene habilitado el catálogo de servicios. Si no tienes este rol, comunícate con el administrador de tu organización para solicitar acceso.
    • Administrador de almacenamiento para el proyecto Google Cloud en el que deseas crear tu solución Si tu configuración de Terraform está en un proyecto diferente, también debes tener el rol de administrador de almacenamiento para el proyecto que contiene tu configuración de Terraform.
    • Editor de Cloud Build para el proyecto Google Cloud en el que deseas crear la solución.

    Si planeas usar tu propia cuenta de servicio, también debes tener el rol de Usuario de cuenta de servicio para el proyecto Google Cloud que contiene la cuenta de servicio que planeas usar.

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

  • Si planeas usar tu propia cuenta de servicio, esta debe tener los siguientes roles de IAM:

    • Administrador de almacenamiento para el proyecto Google Cloud en el que deseas crear tu solución Si tu configuración de Terraform está en un proyecto diferente, tu cuenta de servicio también debe tener el rol Storage Object Viewer para el proyecto que contiene la configuración de Terraform.
    • Escritor de registros para el proyectoGoogle Cloud en el que deseas crear tu 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. Ve a la página Cloud Build.
    3. En el panel izquierdo, selecciona Configuración.
    4. Usa la cuenta de servicio que se proporciona en la sección Correo electrónico de la cuenta de servicio.
    5. Si no usas tu propia cuenta de servicio, otórgale los siguientes roles de IAM. Si deseas conocer los pasos para otorgar roles, 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

  2. Click Create.
  3. On the Create a bucket page, enter your bucket information. To go to the next step, click Continue.
    1. In the Get started section, do the following:
      • Enter a globally unique name that meets the bucket naming requirements.
      • To add a bucket label, expand the Labels section (), click Add label, and specify a key and a value for your label.
    2. In the Choose where to store your data section, do the following:
      1. Select a Location type.
      2. Choose a location where your bucket's data is permanently stored from the Location type drop-down menu.
      3. To set up cross-bucket replication, select Add cross-bucket replication via Storage Transfer Service and follow these steps:

        Set up cross-bucket replication

        1. In the Bucket menu, select a bucket.
        2. In the Replication settings section, click Configure to configure settings for the replication job.

          The Configure cross-bucket replication pane appears.

          • To filter objects to replicate by object name prefix, enter a prefix that you want to include or exclude objects from, then click Add a prefix.
          • To set a storage class for the replicated objects, select a storage class from the Storage class menu. If you skip this step, the replicated objects will use the destination bucket's storage class by default.
          • Click Done.
    3. In the Choose how to store your data section, do the following:
      1. Select a default storage class for the bucket or Autoclass for automatic storage class management of your bucket's data.
      2. To enable hierarchical namespace, in the Optimize storage for data-intensive workloads section, select Enable hierarchical namespace on this bucket.
    4. In the Choose how to control access to objects section, select whether or not your bucket enforces public access prevention, and select an access control method for your bucket's objects.
    5. In the Choose how to protect object data section, do the following:
      • Select any of the options under Data protection that you want to set for your bucket.
        • To enable soft delete, click the Soft delete policy (For data recovery) checkbox, and specify the number of days you want to retain objects after deletion.
        • To set Object Versioning, click the Object versioning (For version control) checkbox, and specify the maximum number of versions per object and the number of days after which the noncurrent versions expire.
        • To enable the retention policy on objects and buckets, click the Retention (For compliance) checkbox, and then do the following:
          • To enable Object Retention Lock, click the Enable object retention checkbox.
          • To enable Bucket Lock, click the Set bucket retention policy checkbox, and choose a unit of time and a length of time for your retention period.
      • To choose how your object data will be encrypted, expand the Data encryption section (), and select a Data encryption method.
  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 Google 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 deGoogle Cloud diferente, otorga acceso al bucket con uno de los siguientes métodos:

  • Otorga el rol de visualizador de objetos de almacenamiento (roles/storage.objectViewer) a las cuentas de servicio de Cloud Build de tus usuarios o a un recurso Google Cloud en el que tus 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 módulos fuera del directorio actual, usa la ruta de acceso remota en lugar de una ruta de acceso 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 Módulos y planos de Terraform para Google Cloud.

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 asegurarte de que el módulo se almacene correctamente cuando comprimas tus archivos de Terraform, ejecuta el siguiente comando: none 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 la consola de Google Cloud .
    Ir a la página Soluciones

  2. Para elegir el proyecto Google Cloud , haz clic en Seleccionar.

  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. De manera opcional, puedes proporcionar tu propia cuenta de servicio haciendo clic en la casilla de verificación junto a Seleccionar o ingresar tu propia cuenta de servicio. Si tu cuenta de servicio se encuentra en el mismo proyecto Google Cloud en el que creas tu solución, selecciona Selecciona una cuenta de servicio del proyecto actual y, luego, selecciona tu cuenta de servicio en el menú desplegable. Si tu cuenta de servicio se encuentra en un Google Cloud proyecto diferente al de tu solución, selecciona Ingresar un correo electrónico de cuenta de servicio desde cualquier proyecto y, luego, ingresa el correo electrónico de tu cuenta de servicio.

  11. Haz 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:

Cómo crear una configuración de Terraform

Próximos pasos