本页面介绍了如何使用 Infrastructure Manager 更新部署。 在以下情况下,您可能需要更新部署:
将基础架构恢复到所选状态。
创建部署后,资源可能会在一段时间后发生变化。例如,某些资源可能已被在控制台中工作的某人修改。您可以使用原始 Terraform 配置更新部署,以将其恢复到所选状态。
实现对基础设施的更改。
创建部署后,您可能需要修改基础架构。例如,添加新资源或更改部分配置。 您可以使用描述新基础架构的 Terraform 配置来更新部署。
本页面假定您熟悉 Terraform。如需了解详情,请参阅 Terraform 和 Infra Manager。
准备工作
- 确保已启用 Infra Manager。
- 确保您拥有创建部署所需的 IAM 权限:
roles/config.admin - 确保您拥有具有所需权限的服务账号。如需了解详情,请参阅配置服务账号。
- 确定要更新的 Infra Manager 部署。
确定要部署的 Terraform 配置以进行更新。任何配置都可以用于修订版本。此配置通常是已部署配置的相同版本或更新版本。
确保此 Terraform 配置符合限制,包括配置不包含敏感数据。
确认贵组织在与预期基础设施关联的产品方面的配额。如果您的预期基础架构超出了组织针对部署所用产品的配额,您可能会遇到部署错误。如需了解详情,请参阅配额和限制。
针对您要修改的资源,采取必要的数据迁移或服务连续性步骤。
如果您想在配置资源之前预览更新,请参阅预览部署更新。
授予特定于配置的权限
如需部署 Terraform 配置中指定的 Google Cloud 资源,您用于调用 Infra Manager 的服务账号需要具有特定于以下方面的权限:
您用于修订版本的配置中定义的Google Cloud 资源。
如果您为修订版本使用的配置与为部署使用的配置定义了不同的资源,则您需要同时拥有这两种配置中定义的资源的权限。
配置中定义的特定于资源的权限是服务账号使用 Infra Manager 服务所需的权限之外的权限。
如需详细了解如何为 Google Cloud 资源授予权限并确保您有权访问所需项目,请参阅配置服务账号。
Connect your private Git repository and host to Cloud Build
If you are deploying a Terraform configuration from a private Git repository, you need to connect your Git host and repository to Cloud Build.
GitHub
GitHub Enterprise
GitLab
GitLab Enterprise
Developer Connect
更新部署
如需更新部署,请使用相同的部署名称部署配置,这样会创建一个修订版本。如需了解详情,请参阅部署和修订版本概览。
如果您没有现有部署,请参阅使用 Infra Manager 部署基础架构。
如需在不预配资源的情况下预览更新,请参阅预览部署。
选择包含所选工作流的标签页,详细了解如何更新部署。
控制台
本部分介绍了如何在 Google Cloud 控制台中使用 Infra Manager 更新 Terraform 配置。
部署配置并创建修订版本:
- 在 Google Cloud 控制台中,前往 Infra Manager 页面。
- 在部署页面上,查看 ID 列,然后点击要更新的部署。
- 在以部署 ID 命名的页面上,点击修改。
- 在部署详情页面上,您可以修改Terraform 版本、服务账号和 Terraform 配置的来源字段。 如果您提供的是私有 Git 代码库,请确保您已将主机和代码库连接到 Cloud Build。
点击继续。
- 在 Terraform 详情页面上,您可以修改 Terraform 配置的输入值。点击继续。
- 在高级详情页面上,您可以修改标签和注释、工作器池和制品 Cloud Storage 存储桶字段。
- 如果您对部署所做的更改感到满意,请点击更新以开始更新流程。
如需详细了解部署参数及其格式,请参阅部署资源文档。
gcloud CLI
本部分介绍了如何部署存储在 Cloud Storage 存储桶中的 Terraform 配置。借助存储桶,您可以控制对配置的访问权限。
- 确保 Terraform 配置位于 Cloud Storage 存储桶中。如需了解详情,请参阅将配置上传到存储桶。
如果存储桶与运行 Infra Manager 的项目位于不同的项目中,则您需要确保 Infra Manager 的服务账号具有对该存储桶的读取权限。如需了解更多详情,请参阅配置服务账号。
如果存储桶与 Infra Manager 位于同一项目中,则系统已启用对该存储桶的读取权限。
部署配置并创建修订版本:
gcloud infra-manager deployments apply projects/PROJECT_ID/locations/LOCATION/deployments/DEPLOYMENT_ID \ --service-account projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT \ --gcs-source gs://BUCKET_NAME/OBJECT_NAME \ --quota-validation=QUOTA_VALIDATION \ --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:运行 Infra Manager 的项目 ID。
- LOCATION:Infra Manager 运行的位置。如需查看有效位置的列表,请参阅 Infra Manager 位置。
- DEPLOYMENT_ID:您指定的部署标识符。如需详细了解部署标识符的限制,请参阅部署名称。
- SERVICE_ACCOUNT_PROJECT_ID 是服务账号的项目 ID。通常情况下,此项目与运行 Infra Manager 的项目相同。
- SERVICE_ACCOUNT:您用于调用 Infra Manager 的服务账号的名称。
- BUCKET_NAME:存储配置的存储桶的名称。
- OBJECT_NAME:配置文件的对象名称。此对象可以是目录或 ZIP 文件,但不能是 Terraform 文件。如果您使用对象版本控制,还可以指定对象的世代编号。如需了解详情,请参阅使用具有版本控制的对象。
如果存储桶是 Terraform 配置的根路径,则 OBJECT_NAME 是可选的。
- 可选:QUOTA_VALIDATION:用于确定在创建部署时,是否启用或强制执行 Terraform 配置文件中资源的配额验证的值。可能的值包括:
ENABLED:针对 Terraform 配置文件中的资源启用计算配额验证。让用户可以了解配额不足的资源。ENFORCED:强制执行配额验证,以便在 Terraform 配置文件中定义的基础设施没有足够的可用配额时,部署会失败。
如果未定义 QUOTA_VALIDATION,则会停用对 Terraform 配置文件的配额验证。此设置为默认值。 配额验证适用于有限的 Google Cloud 资源。如需了解详情,请参阅配额和限制。
INPUT_1_NAME 和 INPUT_2_NAME: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 提供程序。
gcloud CLI
本部分介绍了如何使用存储在 Git 代码库中的 Terraform 配置。
- 确保您已安装 Git。
- 如果您的 Terraform 配置存储在
私有 Git 代码库 中,请确保您的 Git 主机和代码库已连接到 Cloud Build。 部署配置并创建修订版本:
gcloud infra-manager deployments apply projects/PROJECT_ID/locations/LOCATION/deployments/DEPLOYMENT_ID \ --service-account projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT \ --git-source-repo="GIT_REPO" \ --git-source-directory="DIRECTORY" \ --git-source-ref="REF" \ --quota-validation=QUOTA_VALIDATION \ --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:运行 Infra Manager 的项目 ID。
- LOCATION:Infra Manager 运行的位置。如需查看有效位置的列表,请参阅 Infra Manager 位置。
- DEPLOYMENT_ID:您指定的部署标识符。如需详细了解部署标识符的限制,请参阅部署名称。
- SERVICE_ACCOUNT_PROJECT_ID 是服务账号的项目 ID。通常情况下,此项目与运行 Infra Manager 的项目相同。
- SERVICE_ACCOUNT:您用于调用 Infra Manager 的服务账号的名称。
- GIT_REPO:Git 代码库。
- DIRECTORY:包含 Terraform 配置的目录。
- 可选:REF:配置的 Git 引用。参考信息是可选的。如果您未指定引用,则使用 Git 代码库的默认配置分支。
- 可选:QUOTA_VALIDATION:用于确定在创建部署时,是否启用或强制执行 Terraform 配置文件中资源的配额验证的值。可能的值包括:
ENABLED:针对 Terraform 配置文件中的资源启用计算配额验证。让用户可以了解配额不足的资源。ENFORCED:强制执行配额验证,以便在 Terraform 配置文件中定义的基础设施没有足够的可用配额时,部署会失败。
如果未定义 QUOTA_VALIDATION,则会停用对 Terraform 配置文件的配额验证。此设置为默认值。 配额验证适用于有限的 Google Cloud 资源。如需了解详情,请参阅配额和限制。
INPUT_1_NAME 和 INPUT_2_NAME: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 提供程序。
gcloud CLI
本部分介绍如何使用存储在本地机器上的 Terraform 配置。
- 如果您使用 Cloud Shell,则需要将配置上传到 Cloud Shell。如需了解详情,请参阅使用 Cloud Shell 管理文件。
部署配置并创建修订版本:
gcloud infra-manager deployments apply projects/PROJECT_ID/locations/LOCATION/deployments/DEPLOYMENT_ID \ --service-account projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT \ --local-source="LOCAL_DIRECTORY" \ --quota-validation=QUOTA_VALIDATION \ --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:运行 Infra Manager 的项目 ID。
- LOCATION:Infra Manager 运行的位置。如需查看有效位置的列表,请参阅 Infra Manager 位置。
- DEPLOYMENT_ID:您指定的部署标识符。如需详细了解部署标识符的限制,请参阅部署名称。
- SERVICE_ACCOUNT_PROJECT_ID 是服务账号的项目 ID。通常情况下,此项目与运行 Infra Manager 的项目相同。
- SERVICE_ACCOUNT:您用于调用 Infra Manager 的服务账号的名称。
- LOCAL_DIRECTORY:存储 Terraform 配置的本地目录。如果您使用的是 Cloud Shell,则这是 Cloud Shell 中存储配置的目录。
- 可选:QUOTA_VALIDATION:用于确定在创建部署时,是否启用或强制执行 Terraform 配置文件中资源的配额验证的值。可能的值包括:
ENABLED:针对 Terraform 配置文件中的资源启用计算配额验证。让用户可以了解配额不足的资源。ENFORCED:强制执行配额验证,以便在 Terraform 配置文件中定义的基础设施没有足够的可用配额时,部署会失败。
如果未定义 QUOTA_VALIDATION,则会停用对 Terraform 配置文件的配额验证。此设置为默认值。 配额验证适用于有限的 Google Cloud 资源。如需了解详情,请参阅配额和限制。
INPUT_1_NAME 和 INPUT_2_NAME: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 与 Google Cloud搭配使用。
- 实现部署自动化。
- 查看部署的状态。
- 查看已部署的资源。
- 删除部署。