创建 Terraform 配置
为组织选择 Service Catalog 解决方案时,您可以创建 Terraform 配置,您的用户可以使用 Terraform 部署该配置。创建配置后,您可以将其分配给目录,从而与用户共享。
在本指南中,您将使用 Cloud Build 在最新版本的 Terraform Docker 映像中运行 Terraform 命令,并使用 Cloud Storage 存储和管理 Terraform 资源,例如模块和状态文件。
如需了解有关使用 Terraform 的资源和指南,请参阅将 Terraform 与 Google Cloud 搭配使用。
准备工作
您必须拥有以下已经与您分享解决方案 (IAM) 角色:
- 已启用 Service Catalog 的 Google Cloud 项目的 Catalog Admin (
roles/cloudprivatecatalogproducer.admin
) 或 Catalog Manager (roles/cloudprivatecatalogproducer.manager
)。 - 在其中启用了 Service Catalog 的项目的 Storage Admin (
roles/storage.admin
)。 要在其中创建解决方案的项目的 Cloud Build Editor (
roles/cloudbuild.builds.editor
)。如果您不具备这些角色,请联系您的组织管理员以请求访问权限。
- 已启用 Service Catalog 的 Google Cloud 项目的 Catalog Admin (
在您要在其中创建配置的项目中设置 Cloud Build:
-
Enable the Cloud Build API.
启用 API 后,系统会自动创建您在下一步中使用的 Cloud Build 服务帐号。
向服务帐号授予以下 IAM 角色:
- Project Editor (
roles/editor
) - Storage Admin (
roles/storage.admin
)
如需了解如何授予角色的步骤,请参阅配置 Cloud Build 服务帐号的访问权限。
- Project Editor (
-
将配置文件上传到 Cloud Storage
您可以使用 Cloud Storage 为 Service Catalog 管理 Terraform 配置文件。
创建 Cloud Storage 存储桶
如需设置 Cloud Storage,请在您为组织启用了 Service Catalog 的项目中创建存储桶:
- 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.
启用对象版本控制
您必须对存储分区使用对象版本控制,以防止 Terraform 配置被删除或覆盖。如需启用对象版本控制,请参阅有关使用对象版本控制的 Cloud Storage 文档。
授予对存储桶的访问权限
当组织中的用户部署配置时,他们的 Cloud Build 服务帐号必须拥有存储分区的读取权限。如果您的存储分区存储在用户部署配置的 Cloud 项目中,则服务帐号已经具有此访问权限。
如果您的用户要在其他 Cloud 项目中部署配置,请使用以下任一方法授予对存储分区的访问权限:
将 Storage Object Viewer (
roles/storage.objectViewer
) 角色授予用户的 Cloud Build 服务帐号,或者用户在其中部署 Terraform 配置的 Google Cloud 资源(例如项目、文件夹或组织)。使用访问控制列表 (ACL) 管理对存储分区的访问权限。
如需详细了解如何管理对存储分区的访问权限,请参阅 Cloud Storage 的访问权限控制概览。
创建和上传 Terraform 模块
设置 Cloud Storage 存储分区后,您必须创建并上传 Terraform 模块,该模块是您的所有配置文件的容器。Service Catalog 使用该模块自动生成 JSON 架构文件,以定义配置的变量。
在当前目录之外调用模块时,请使用远程路径而不是相对路径。例如,使用 source = "GoogleCloudPlatform/cloud-run/google"
,而不要使用 source = "../../"
。
如需了解常见 Google Cloud 用例的模块,请参阅 Cloud Foundation Toolkit。
以下代码示例展示了 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
}
}
}
创建模块后,将文件压缩为 zip 文件。确保模块存储在 zip 文件的根目录下。
为了确保在压缩 Terraform 文件时正确存储模块,请运行以下命令:zip solution.zip file1.tf file2.tf file3.tf
然后,将 zip 文件上传到您的存储分区。如需了解上传 zip 文件的步骤,请参阅有关上传对象的 Cloud Storage 文档。
在 Service Catalog 中创建配置
使用 Terraform 模块设置 Cloud Storage 存储分区后,您可以创建一个包含该存储桶的 Service Catalog 解决方案。
如需创建 Terraform 配置作为 Service Catalog 解决方案,请执行以下操作:
转到 Cloud Console 中的 Service Catalog Admin 解决方案页面。
转到“解决方案”页面点击选择以选择 Google Cloud 项目。
点击创建解决方案。在下拉列表中,选择创建 Terraform 配置。
为您的 Terraform 配置输入名称、说明和标语。标语是用户在浏览 Service Catalog 时看到的解决方案简短说明。
在指向 Terraform 配置的链接字段中,提供包含 Terraform 模块的 zip 文件的 Cloud Storage 存储分区的链接,例如
gs://my-terraform-bucket/my-zip-file.zip
。(可选)上传解决方案的图标。 建议的图标尺寸为 80 × 80 像素。
(可选)输入创建者的支持链接和联系信息。
(可选)添加关联到解决方案文档的链接。
选择您要用于部署解决方案的 Terraform 版本。
点击创建。
解决方案已创建完毕,并显示在 Service Catalog“管理”解决方案页面上。
以下屏幕截图演示了如何创建 Terraform 配置:
后续步骤
- 将 Terraform 配置分配给目录,以便组织中的用户能够访问和部署解决方案。
- 使用最新 Terraform 配置详细信息更新解决方案。