本页介绍了如何使用 Infrastructure Manager 预览 Terraform 配置中定义的资源的部署。
预览描述了用于实现特定 Terraform 配置的操作。 在创建新部署或更新部署之前,您可以预览部署,以验证计划配置的资源。
预览会执行 Terraform plan
命令。本页面假定您熟悉 Terraform。如需了解详情,请参阅 Terraform 和 Infrastructure Manager。
如需创建预览版,Terraform 配置需要与受支持的 Terraform 版本之一兼容。
准备工作
- 启用基础设施管理器。
- 确保您拥有创建预览所需的 Identity and Access Management 权限:
roles/config.admin
。 - 确保您拥有具有所需权限的服务账号。如需了解详情,请参阅配置服务账号。
- 确定要预览的 Terraform 配置。确保此 Terraform 配置符合限制,包括配置不包含敏感数据。
如果您想将 Terraform 配置存储在存储桶中,请确保已将 Terraform 配置上传到 Cloud Storage 存储桶。如需了解详情,请参阅将配置上传到存储桶。
通过存储桶,您可以控制对配置的访问权限。您还可以部署存储在 Git 代码库中或本地机器上的 Terraform 配置。
预览新部署
您预览的 Terraform 配置可以位于存储桶中,也可以位于 Git 代码库中。
使用存储在 Cloud Storage 存储桶中的 Terraform 配置进行预览
确保 Terraform 配置已上传到 Cloud Storage 存储桶。如需了解详情,请参阅将配置上传到存储桶。
通过存储桶,您可以控制对配置的访问权限。您还可以部署存储在 Git 代码库中或本地机器上的 Terraform 配置。
如需预览更新,请执行以下操作:
gcloud infra-manager previews create projects/PROJECT_ID/locations/LOCATION/previews/PREVIEW_ID \ --service-account projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT \ --gcs-source gs://BUCKET_NAME/OBJECT_NAME \ --input-values=INPUT_1_NAME=VALUE,INPUT_2_NAME=VALUE \ --tf-version-constraint=TERRAFORM_VERSION \ --annotations="ANNOTATION_KEY=ANNOTATION_VALUE" --provider-source=SERVICE_MAINTAINED
您需要进行如下替换:
- PROJECT_ID 是运行 Infrastructure Manager 的项目 ID。
- LOCATION 是 Infra Manager 的运行位置。如需查看有效位置的列表,请参阅 Infrastructure Manager 位置。
- PREVIEW_ID 是您指定的预览标识符。如需详细了解预览版标识符的限制,请参阅预览版名称。
- SERVICE_ACCOUNT 是您用于调用 Infra Manager 的服务账号的名称。
- SERVICE_ACCOUNT_PROJECT_ID 是服务账号的项目 ID。此项目通常与运行 Infra Manager 的项目相同。
- BUCKET_NAME 是存储配置的存储桶的名称。
OBJECT_NAME 是配置文件的对象名称。此对象可以是目录或 zip 文件,但不能是 Terraform 文件。如果您使用对象版本控制,还可以指定对象的世代号。如需了解详情,请参阅使用具有版本控制的对象。
如果存储桶是 Terraform 配置的根路径,则 OBJECT_NAME 是可选的。
INPUT_1_NAME=VALUE 和 INPUT_2_NAME=VALUE:Terraform 配置中的任何输入值,包括未默认定义的值。例如,您可以将部署资源的项目指定为
project_id=my-project
。如果所有输入值都在配置中默认定义,则此标志为可选。
可选:TERRAFORM_VERSION:Infra Manager 用于创建部署的 Terraform 版本。如需查看受支持版本的列表,请参阅受支持的 Terraform 版本。如果您移除此可选标志,系统会使用最新支持的 Terraform 版本。
可选:ANNOTATION_KEY 和 ANNOTATION_VALUE 表示可附加到 Infra Manager 部署的自由格式文本的键值对。如需详细了解注释和标签的使用及限制,请参阅注释和标签。
- 可选:PROVIDER_SOURCE:确定部署使用哪个适用于 Google Cloud 的 Terraform 提供程序。设置为
SERVICE_MAINTAINED
可使用 Infra Manager 维护的 Terraform 提供程序。省略此字段可使用由 HashiCorp 维护的 Terraform 提供程序。如需了解详情,请参阅使用 Google Cloud的 Terraform 提供程序。
部署中的字段(例如 Terraform 配置、变量和服务账号会自动合并到预览中,除非您在预览命令中指定新值。
创建预览版后,您可以导出并查看结果,以检查部署方案。
使用存储在 Git 代码库中的 Terraform 配置进行预览
更新部署时,某些现有资源可能不会发生变化。预览更新可让您了解计划预配或删除哪些资源,以及计划不修改哪些资源。
如需更新存储在 Git 代码库中的部署,请执行以下操作:
如果您使用的是私有 Git 代码库,请确保您已使用 Cloud Build 连接到您的 GitHub 主机和 GitHub 代码库,以便为 Infra Manager 提供对您的代码库的访问权限。
如需预览部署,请执行以下操作:
gcloud infra-manager previews create projects/PROJECT_ID/locations/LOCATION/previews/PREVIEW_ID \ --service-account projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT \ --git-source-repo="GIT_REPO" \ --git-source-directory="DIRECTORY" \ --git-source-ref="REF" \ --input-values=INPUT_1_NAME=VALUE,INPUT_2_NAME=VALUE \ --tf-version-constraint=TERRAFORM_VERSION \ --annotations="ANNOTATION_KEY=ANNOTATION_VALUE" --provider-source=SERVICE_MAINTAINED
您需要进行如下替换:
- PROJECT_ID 是运行 Infrastructure Manager 的项目 ID。
- LOCATION 是 Infra Manager 的运行位置。如需查看有效位置的列表,请参阅 Infrastructure Manager 位置。
- PREVIEW_ID 是您指定的预览标识符。如需详细了解预览版标识符的限制,请参阅预览版名称。
- SERVICE_ACCOUNT 是您用于调用 Infra Manager 的服务账号的名称。
- SERVICE_ACCOUNT_PROJECT_ID 是服务账号的项目 ID。此项目通常与运行 Infra Manager 的项目相同。
- GIT_REPO:Git 代码库。
- DIRECTORY:包含 Terraform 配置的目录。
- REF:配置的 Git 参考。参考是可选的。如果您未指定引用,则系统会使用 Git 代码库的默认配置分支。
INPUT_1_NAME=VALUE 和 INPUT_2_NAME=VALUE:Terraform 配置中的任何输入值,包括未默认定义的值。例如,您可以将部署资源的项目指定为
project_id=my-project
。如果所有输入值都在配置中默认定义,则此标志为可选。
可选:TERRAFORM_VERSION:Infra Manager 用于创建部署的 Terraform 版本。如需查看受支持版本的列表,请参阅受支持的 Terraform 版本。如果您移除此可选标志,系统会使用最新支持的 Terraform 版本。
可选:ANNOTATION_KEY 和 ANNOTATION_VALUE 表示可附加到 Infra Manager 部署的自由格式文本的键值对。如需详细了解注释和标签的使用及限制,请参阅注释和标签。
- 可选:PROVIDER_SOURCE:确定部署使用哪个适用于 Google Cloud 的 Terraform 提供程序。设置为
SERVICE_MAINTAINED
可使用 Infra Manager 维护的 Terraform 提供程序。省略此字段可使用由 HashiCorp 维护的 Terraform 提供程序。如需了解详情,请参阅使用 Google Cloud的 Terraform 提供程序。
部署中的字段(例如 Terraform 配置、变量和服务账号会自动合并到预览中,除非您在预览命令中指定新值。
创建预览版后,您可以导出并查看结果,以检查部署方案。
预览部署后,您可以创建部署以预配资源。如需了解详情,请参阅部署资源。
后续步骤
- 导出并查看预览结果
- 使用 Infra Manager 部署资源。
- 实现部署自动化。
- 详细了解将 Terraform 与 Infra Manager 搭配使用。