本页介绍了如何使用 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 搭配使用。