本页面介绍了如何使用 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 版本。如果您移除此可选标志,Infra Manager 会使用现有部署的 Terraform 版本,或默认使用最新支持的免费层级版本 (
1.5.7)。如需升级到付费版本(例如1.16.5),您必须明确指定该版本。 - 可选:ANNOTATION_KEY 和 ANNOTATION_VALUE 表示可附加到 Infra Manager 部署的自由格式文本的键值对。如需详细了解注释和标签的使用和限制,请参阅注释和标签。
- Optional: PROVIDER_SOURCE: Determines which Terraform provider
for Google Cloud the deployment uses. Set to
SERVICE_MAINTAINEDto use the Infra Manager maintained Terraform provider. Omit this field to use the HashiCorp-maintained Terraform provider. For more information, see Use the Terraform provider for Google Cloud.
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 版本。如果您移除此可选标志,Infra Manager 会使用现有部署的 Terraform 版本,或默认使用最新支持的免费层级版本 (
1.5.7)。如需升级到付费版本(例如1.16.5),您必须明确指定该版本。 - 可选:ANNOTATION_KEY 和 ANNOTATION_VALUE 表示可附加到 Infra Manager 部署的自由格式文本的键值对。如需详细了解注释和标签的使用和限制,请参阅注释和标签。
- Optional: PROVIDER_SOURCE: Determines which Terraform provider
for Google Cloud the deployment uses. Set to
SERVICE_MAINTAINEDto use the Infra Manager maintained Terraform provider. Omit this field to use the HashiCorp-maintained Terraform provider. For more information, see Use the Terraform provider for Google Cloud.
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 版本。如果您移除此可选标志,Infra Manager 会使用现有部署的 Terraform 版本,或默认使用最新支持的免费层级版本 (
1.5.7)。如需升级到付费版本(例如1.16.5),您必须明确指定该版本。 - 可选:ANNOTATION_KEY 和 ANNOTATION_VALUE 表示可附加到 Infra Manager 部署的自由格式文本的键值对。如需详细了解注释和标签的使用和限制,请参阅注释和标签。
- Optional: PROVIDER_SOURCE: Determines which Terraform provider
for Google Cloud the deployment uses. Set to
SERVICE_MAINTAINEDto use the Infra Manager maintained Terraform provider. Omit this field to use the HashiCorp-maintained Terraform provider. For more information, see Use the Terraform provider for Google Cloud.
后续步骤
- 详细了解将 Terraform 与 Google Cloud搭配使用。
- 实现部署自动化。
- 查看部署的状态。
- 查看已部署的资源。
- 删除部署。