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):
- Administrador del catálogo O Administrador de catálogo de la organizaciónGoogle Cloud asociada con el proyecto Google Cloud que tiene habilitado el catálogo de servicios. Si no tienes esta función, 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 del 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 la cuenta de servicio para el Google Cloud proyecto 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 Google Cloud proyecto 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 de Visualizador de objetos de almacenamiento para el proyecto que contiene la configuración de Terraform.
- Logs Writer 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:
-
Enable the Cloud Build 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. - Ve a la página Cloud Build.
- En el panel izquierdo, selecciona Configuración.
- Usa la cuenta de servicio que se proporciona en la sección Correo electrónico de la cuenta de servicio.
- Si no usas tu propia cuenta de servicio, otorga los siguientes roles de IAM a la cuenta de servicio. Si deseas conocer los pasos para otorgar roles, consulta Configura el acceso a la cuenta de servicio de Cloud Build.
- Editor de proyecto
(
roles/editor
) - Administrador de almacenamiento
(
roles/storage.admin
)
- Editor de proyecto
(
-
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:
- In the Google Cloud console, go to the Cloud Storage Buckets page.
- Click Create bucket.
- 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.
- 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 de Google Cloud diferente, otorga acceso al bucket mediante 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 los usuarios o a un recurso Google Cloud en el que los usuarios implementan configuraciones 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 Google Cloud casos de uso comunes, consulta planos y módulos 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 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:
Ve a la página Soluciones del administrador del catálogo de servicios en la consola de Google Cloud.
Ir a la página SolucionesPara elegir el Google Cloud proyecto, haz clic en Seleccionar.
Haz clic en Crear solución. En la lista desplegable, selecciona Crear una configuración de Terraform.
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.
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
.De manera opcional, sube un ícono para la solución. Las dimensiones recomendadas para un ícono son de 80 por 80 píxeles.
Opcionalmente, ingresa un vínculo de asistencia y la información de contacto del creador.
De manera opcional, agrega un vínculo a la documentación para la solución.
Selecciona la versión de Terraform que deseas usar para implementar la solución.
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 elige tu cuenta de servicio en el menú desplegable. Si tu cuenta de servicio se encuentra en un proyecto Google Cloud 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.
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](https://cloud.google.com/static/service-catalog/images/screen-privatecatalog-create-terraform.png?authuser=3&hl=es-419)
Próximos pasos
- 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, luego, implementarla.
- Actualiza una solución con los detalles de configuración más recientes de Terraform.