本页面介绍了如何使用 Infrastructure Manager 预览 Terraform 配置中定义的资源的部署。
预览会说明执行特定 Terraform 配置的操作。 在创建新部署或更新部署之前,您可以预览部署,以验证计划预配的资源。
预览会执行 Terraform plan 命令。本页面假定您熟悉 Terraform。如需了解详情,请参阅 Terraform 和 Infrastructure Manager。
如需创建预览,Terraform 配置需要与受支持的 Terraform 版本之一兼容。
准备工作
- 启用 Infra Manager。
- 确保您拥有创建预览所需的 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 的最新受支持免费层级版本 (
1.5.7)。如需使用付费版本(例如1.16.5)进行预览,您必须明确指定该版本。预览不会产生付费 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 的最新受支持免费层级版本 (
1.5.7)。如需使用付费版本(例如1.16.5)进行预览,您必须明确指定该版本。预览不会产生付费 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 搭配使用。