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 usas 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 los siguientes roles de Identity and Access Management (IAM):

    • Administrador del catálogo O Administrador de catálogos para la Google Cloud organización asociada al Google Cloud proyecto 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 Google Cloud proyecto 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 Google Cloud proyecto 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 Google Cloud proyecto que contiene la cuenta de servicio que planeas usar.

    Si no tienes estos roles, 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:

    Si no tienes estos roles, 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. Habilita la API de Cloud Build.

      Roles necesarios para habilitar las APIs

      Para habilitar las APIs, necesitas el rol de IAM de administrador de Service Usage (roles/serviceusage.serviceUsageAdmin), que contiene el permiso serviceusage.services.enable. Obtén más información para otorgar roles.

      Habilitar la 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 de 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, otorga los siguientes roles de IAM a la cuenta de servicio. Si deseas obtener 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. En la Google Cloud consola, ve a la página Buckets de Cloud Storage.

    Ir a Buckets

  2. Haz clic en Crear.
  3. En la página Crear un bucket, ingresa la información de tu bucket. Para ir al paso siguiente, haz clic en Continuar.
    1. En la sección Comenzar, haz lo siguiente:
      • Ingresa un nombre único a nivel global que cumpla con los requisitos de nombres de buckets.
      • Para agregar una etiqueta de bucket, expande la sección Etiquetas (), haz clic en Agregar etiqueta y especifica una key y un value para tu etiqueta.
    2. En la sección Elige dónde almacenar tus datos, haz lo siguiente:
      1. Selecciona un tipo de ubicación.
      2. Elige una ubicación en la que los datos de tu bucket se almacenen de forma permanente en el menú desplegable Tipo de ubicación.
      3. Para configurar la replicación bucket buckets, selecciona Agregar replicación entre bucket a través de Storage Transfer Service y sigue estos pasos:

        Configura la replicación entre bucket

        1. En el menú Bucket, selecciona un bucket.
        2. En la sección Configuración de replicación, haz clic en Configurar para configurar la configuración del trabajo de replicación.

          Aparecerá el panel Configurar replicación entre buckets.

          • Para filtrar los objetos que se replicarán por prefijo de nombre de objeto, ingresa un prefijo del que deseas incluir o excluir objetos y, luego, haz clic en Agregar un prefijo.
          • Para establecer una clase de almacenamiento para los objetos replicados, selecciona una clase de almacenamiento en el menú Clase de almacenamiento. Si omites este paso, los objetos replicados usarán la clase de almacenamiento del bucket de destino de forma predeterminada.
          • Haz clic en Listo.
    3. En la sección Elige cómo almacenar tus datos, haz lo siguiente:
      1. Selecciona una clase de almacenamiento predeterminada para el bucket o Autoclass para la administración automática de la clase de almacenamiento de los datos de tu bucket.
      2. Para habilitar el espacio de nombres jerárquico, en la sección Optimizar el almacenamiento para cargas de trabajo con uso intensivo de datos, selecciona Habilitar el espacio de nombres jerárquico en este bucket.
    4. En la sección Elige cómo controlar el acceso a los objetos, selecciona si tu bucket aplica la prevención de acceso público, y selecciona un método de control de acceso para los objetos de tu bucket.
    5. En la sección Elige cómo proteger los datos de los objetos, haz lo siguiente:
      • Selecciona cualquiera de las opciones en Protección de datos que deseas configurar para tu bucket.
        • Para habilitar el borrado lógico, haz clic en la casilla de verificación Política de borrado lógico (para la recuperación de datos) y especifica la cantidad de días que deseas conservar los objetos después de borrarlos.
        • Para configurar el Control de versiones de objetos, haz clic en la casilla de verificación Control de versiones de objetos (para el control de versión) y especifica la cantidad máxima de versiones por objeto y la cantidad de días después de los cuales vencen las versiones no actuales.
        • Para habilitar la política de retención en objetos y buckets, haz clic en la casilla de verificación Retención (para cumplimiento) y, luego, haz lo siguiente:
          • Para habilitar el bloqueo de retención de objetos, haz clic en la casilla de verificación Habilitar la retención de objetos.
          • Para habilitar el bloqueo de buckets, haz clic en la casilla de verificación Establecer política de retención de buckets y elige una unidad de tiempo y una duración para tu período de retención.
      • Para elegir cómo se encriptarán los datos de tus objetos, expande la sección Encriptación de datos () y selecciona un método de Encriptación de datos.
  4. Haz clic en Crear.

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 Google Cloud proyecto en el que los usuarios implementan la configuración, entonces la cuenta de servicio ya tiene este acceso.

Si tus usuarios implementan la configuración en un proyecto diferente Google Cloud 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 Google Cloud recurso 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 módulos fuera del directorio actual, usa la ruta remota en lugar de una ruta relativa. Por ejemplo, en lugar de source = "../../", usa source = "GoogleCloudPlatform/cloud-run/google".

Para ver los módulos de casos de uso comunes, consulta Terraform blueprints and modules for Google Cloud. 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 garantizar el almacenamiento adecuado del módulo 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 Google Cloud consola.
    Ir a la página Soluciones

  2. Para elegir el Google Cloud proyecto, 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 Google Cloud proyecto en el que creas tu solución, selecciona Seleccionar una cuenta de servicio del proyecto actual y selecciona tu cuenta de servicio en el menú desplegable. Si tu cuenta de servicio se encuentra en un proyecto diferente Google Cloud de tu solución, selecciona Ingresar un correo electrónico de cuenta de servicio de 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