Crear una configuración de Terraform
Cuando selecciones soluciones del catálogo de servicios para tu organización, puedes crear una configuración de Terraform o config, que tus usuarios desplegarán con Terraform. Una vez que hayas creado la configuración, podrás compartirla con los usuarios asignándola a catálogos.
En esta guía, usarás 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 gestionar recursos de Terraform, como módulos y archivos de estado.
Para obtener recursos y directrices sobre el uso de Terraform, consulta Usar Terraform con Google Cloud.
Antes de empezar
Debes tener los siguientes roles de Gestión de Identidades y Accesos (IAM):
- Administrador de catálogo O Administrador de catálogo de la Google Cloud organización asociada al Google Cloud proyecto que tiene habilitado Service Catalog. Si no tienes este rol, ponte en contacto con el administrador de tu organización para solicitar acceso.
- Administrador de Storage para el proyecto en el que quieras crear tu solución. Google Cloud Si tu configuración de Terraform está en otro proyecto, también debes tener el rol Administrador de Storage en el proyecto que contiene tu configuración de Terraform.
- Editor de Cloud Build para el Google Cloud proyecto en el que quieras crear la solución.
Si tienes previsto usar tu propia cuenta de servicio, también debes tener el rol Usuario de cuenta de servicio en el proyecto que contiene la cuenta de servicio que quieres usar. Google Cloud
Si no tienes estos roles, ponte en contacto con el administrador de tu organización para solicitar acceso.
Si tienes previsto usar tu propia cuenta de servicio, esta debe tener los siguientes roles de gestión de identidades y accesos:
- Administrador de Storage para el proyecto en el que quieras crear tu solución. Google Cloud Si tu configuración de Terraform está en otro proyecto, tu cuenta de servicio también debe tener el rol Lector de objetos de almacenamiento en el proyecto que contenga la configuración de Terraform.
- Escritor de registros del proyecto en el que quieras crear tu solución.Google Cloud
Si no tienes estos roles, ponte en contacto con el administrador de tu organización para solicitar acceso.
Configura Cloud Build en el proyecto en el que vas a crear la configuración:
-
Enable the Cloud Build API.
Al habilitar la API, se crea automáticamente una cuenta de servicio de Cloud Build que usarás en el siguiente paso.Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles. - Ve a la página Cloud Build.
- En el panel de la izquierda, selecciona Configuración.
- Usa la cuenta de servicio que se indica en la sección Correo de la cuenta de servicio.
- Si no usas tu propia cuenta de servicio, otorga los siguientes roles de gestión de identidades y accesos a la cuenta de servicio. Para ver los pasos para conceder roles, consulta el artículo Configurar el acceso a la cuenta de servicio de Cloud Build.
- Editor de proyectos
(
roles/editor
) - Administrador de Storage
(
roles/storage.admin
)
- Editor de proyectos
(
-
Subir archivos de configuración a Cloud Storage
Utilizas Cloud Storage para gestionar los archivos de configuración de Terraform de Service Catalog.
Crear un segmento de Cloud Storage
Para configurar Cloud Storage, crea un segmento en el mismo proyecto en el que hayas habilitado Service Catalog para tu organización:
- In the Google Cloud console, go to the Cloud Storage Buckets page.
- Click Create.
- On the Create a bucket page, enter your bucket information. To go to the next
step, click Continue.
-
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_box
Add label, and specify a
key
and avalue
for your label.
-
In the Choose where to store your data section, do the following:
- Select a Location type.
- Choose a location where your bucket's data is permanently stored from the Location type drop-down menu.
- If you select the dual-region location type, you can also choose to enable turbo replication by using the relevant checkbox.
- To set up cross-bucket replication, select
Add cross-bucket replication via Storage Transfer Service and
follow these steps:
Set up cross-bucket replication
- In the Bucket menu, select a bucket.
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.
-
In the Choose how to store your data section, do the following:
- Select a default storage class for the bucket or Autoclass for automatic storage class management of your bucket's data.
- To enable hierarchical namespace, in the Optimize storage for data-intensive workloads section, select Enable hierarchical namespace on this bucket.
- 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.
-
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 (Data encryption method. ), and select a
- Select any of the options under Data protection that you
want to set for your bucket.
-
In the Get started section, do the following:
- Click Create.
Habilitación de Control de versiones del objeto
Debes usar la gestión de versiones de objetos en tu segmento para proteger tu configuración de Terraform frente a la eliminación o la sobrescritura. Para habilitar la gestión de versiones de objetos, consulta la documentación de Cloud Storage sobre cómo usar la gestión de versiones de objetos.
Conceder acceso a tu segmento
Cuando los usuarios de tu organización implementen la configuración, su cuenta de servicio de Cloud Build debe tener acceso de lectura a tu segmento. Si tu contenedor se almacena en el mismo proyecto en el que los usuarios implementan la configuración, la cuenta de servicio ya tiene este acceso. Google Cloud
Si tus usuarios van a implementar la configuración en unGoogle Cloud proyecto diferente, concédeles acceso al segmento mediante uno de los siguientes métodos:
Asigna el rol Lector de objetos de Storage (
roles/storage.objectViewer
) a las cuentas de servicio de Cloud Build de tus usuarios o a un Google Cloud recurso en el que tus usuarios implementen configuraciones de Terraform, como un proyecto, una carpeta o una organización.Usa una lista de control de acceso (LCA) para gestionar el acceso al segmento.
Para obtener información sobre cómo gestionar el acceso a los contenedores, consulta la descripción general del control de acceso de Cloud Storage.
Crear y subir un módulo de Terraform
Después de configurar tu segmento de Cloud Storage, debes crear y subir un módulo de Terraform, que es un contenedor de todos tus archivos de configuración. Service Catalog usa el módulo para generar automáticamente un archivo de esquema JSON que defina las variables de tu configuración.
Cuando llames a módulos que estén 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 módulos de casos prácticos habituales, consulta Planos y módulos de Terraform para Google Cloud. Google Cloud
El siguiente ejemplo de código muestra 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 el 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 almacena correctamente al comprimir los archivos de Terraform, ejecuta el siguiente comando:
none
zip solution.zip file1.tf file2.tf file3.tf
A continuación, sube el archivo ZIP al bucket. Para saber cómo subir el archivo ZIP, consulta la documentación de Cloud Storage sobre cómo subir objetos.
Crear la configuración en el catálogo de servicios
Después de configurar un segmento de Cloud Storage con tu módulo de Terraform, crea una solución de Service Catalog que incluya el segmento.
Para crear la configuración de Terraform como solución de Service Catalog, sigue estos pasos:
Ve a la página Soluciones de la consola de administración del catálogo de servicios. Google Cloud
Ve a la página Soluciones.Para elegir el Google Cloud proyecto, haz clic en Seleccionar.
Haz clic en Crear solución. En la lista desplegable, selecciona Crear configuración de Terraform.
Introduce un nombre, una descripción y un eslogan para tu configuración de Terraform. El eslogan es una breve descripción de una solución que los usuarios ven mientras consultan el catálogo de servicios.
En el campo Link to Terraform config (Enlace a la configuración de Terraform), proporciona el enlace al segmento de Cloud Storage que contiene el archivo ZIP del módulo de Terraform, como
gs://my-terraform-bucket/my-zip-file.zip
.También puedes subir un icono para la solución. Las dimensiones recomendadas para un icono son 80x80 píxeles.
También puedes introducir un enlace de asistencia e información de contacto del creador.
Si quieres, añade un enlace a la documentación de la solución.
Selecciona la versión de Terraform que quieras usar para implementar la solución.
También puedes proporcionar tu propia cuenta de servicio haciendo clic en la casilla situada junto a Seleccionar o introducir tu propia cuenta de servicio. Si tu cuenta de servicio se encuentra en el mismo proyecto en el que vas a crear tu solución, selecciona Seleccionar una cuenta de servicio del proyecto actual y, a continuación, elige tu cuenta de servicio en el menú desplegable. Google Cloud Si tu cuenta de servicio se encuentra en un Google Cloud proyecto diferente al de tu solución, selecciona Introduce una dirección de correo de una cuenta de servicio de cualquier proyecto y escribe la dirección de correo de tu cuenta de servicio.
Haz clic en CREAR.
La solución se crea y aparece en la página Soluciones de la consola de administración de Service Catalog.
En la siguiente captura de pantalla se muestra cómo crear una configuración de Terraform:

Pasos siguientes
- Asigna la configuración de Terraform a un catálogo para que los usuarios de tu organización puedan acceder a la solución y desplegarla.
- Actualizar una solución con los detalles de configuración de Terraform más recientes.