本页介绍了如何使用 Infrastructure Manager 预览 Terraform 配置中定义的资源的部署。
预览会说明用于启用特定 Terraform 配置的操作。在创建新的部署或更新部署之前,您可以预览部署,以验证计划预配的资源。
预览会执行 Terraform plan
命令。本页假定您熟悉 Terraform。如需了解详情,请参阅 Terraform 和 Infrastructure Manager。
如需创建预览,Terraform 配置需要与受支持的 Terraform 版本之一兼容。
准备工作
- 启用 Infra Manager。
- 确保您拥有创建预览所需的 IAM 权限:
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 \ --annotation="ANNOTATION_KEY=ANNOTATION_VALUE"
您需要进行如下替换:
- PROJECT_ID 是运行 Infrastructure Manager 的项目 ID。
- LOCATION 是 Infra Manager 的运行位置。如需查看有效位置的列表,请参阅 Infrastructure Manager 位置。
- PREVIEW_ID 是您指定的预览标识符。如需详细了解预览 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:Infrastructure Manager 用于创建部署的 Terraform 版本。如需查看受支持的版本列表,请参阅受支持的 Terraform 版本。如果您移除此可选标志,系统会使用最新的受支持版本的 Terraform。
可选:ANNOTATION_KEY 和 ANNOTATION_VALUE 表示可附加到 Infra Manager 部署的自由格式文本键值对。如需详细了解注释和标签的使用和限制,请参阅注释和标签。
除非您在预览命令中指定了新值,否则部署中的字段(例如 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 \ --annotation="ANNOTATION_KEY=ANNOTATION_VALUE"
您需要进行如下替换:
- PROJECT_ID 是运行 Infrastructure Manager 的项目 ID。
- LOCATION 是 Infra Manager 的运行位置。如需查看有效位置的列表,请参阅 Infrastructure Manager 位置。
- PREVIEW_ID 是您指定的预览标识符。如需详细了解预览 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:Infrastructure Manager 用于创建部署的 Terraform 版本。如需查看受支持版本的列表,请参阅受支持的 Terraform 版本。如果您移除此可选标志,系统会使用最新的受支持版本的 Terraform。
可选:ANNOTATION_KEY 和 ANNOTATION_VALUE 表示可附加到 Infra Manager 部署的自由格式文本键值对。如需详细了解注释和标签的使用和限制,请参阅注释和标签。
除非您在预览命令中指定了新值,否则部署中的字段(例如 Terraform 配置、变量和服务账号)会自动合并到预览中。
现在,您已创建预览,可以导出和查看结果,以查看部署方案。
预览部署后,您可以创建部署以预配资源。如需了解详情,请参阅部署资源。
后续步骤
- 导出和查看预览结果
- 使用 Infra Manager 部署资源。
- 实现部署自动化。
- 详细了解如何将 Terraform 与 Infra Manager 搭配使用。