预览部署的更新

本页面介绍了如何使用 Infrastructure Manager 预览 Terraform 配置中定义的资源的部署。

预览会说明执行特定 Terraform 配置的操作。 在创建新部署或更新部署之前,您可以预览部署,以验证计划预配的资源。

预览会执行 Terraform plan 命令。本页面假定您熟悉 Terraform。如需了解详情,请参阅 Terraform 和 Infrastructure Manager。

如需创建预览,Terraform 配置需要与受支持的 Terraform 版本之一兼容。

准备工作

  1. 启用 Infra Manager。
  2. 确保您拥有创建预览所需的 IAM 权限:roles/config.admin。
  3. 确保您拥有具有所需权限的服务账号。如需了解详情,请参阅配置服务账号。
  4. 确定要预览的 Terraform 配置。确保此 Terraform 配置符合限制条件,包括配置不包含敏感数据。

预览部署更新

用于更新部署的 Terraform 配置可以位于存储桶或 Git 代码库中。

您还可以使用此 Terraform 配置来预览更新。

使用存储在 Cloud Storage 存储桶中的 Terraform 配置进行预览

更新部署时,某些现有资源可能不会发生变化。预览更新会显示计划预配或删除哪些资源,以及计划不修改哪些资源。

  1. 确定要更新的部署。

  2. 确保将 Terraform 配置上传到 Cloud Storage 存储桶。如需了解详情,请参阅将配置上传到存储桶。

    借助存储桶,您可以控制对配置的访问权限。您还可以部署存储在 Git 代码库或本地机器中的 Terraform 配置。

  3. 如需预览更新,请执行以下操作:

    
        
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    gcloud infra-manager previews create projects/PROJECT_ID/locations/LOCATION/previews/PREVIEW_ID \
    --service-account projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT \
    --deployment=projects/PROJECT_ID/locations/LOCATION/deployments/DEPLOYMENT_ID \
    --gcs-source gs://BUCKET_NAME/OBJECT_NAME \
    --input-values=INPUT_1_NAME=VALUE,INPUT_2_NAME=VALUE \
    --tf-version-constraint=TERRAFORM_VERSION \
    --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 运行的项目相同。
    • DEPLOYMENT_ID 是要更新的部署的部署标识符。
    • 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 版本。如果您移除此可选标志,Infra Manager 会使用现有部署的 Terraform 版本,或默认使用受支持的最新免费层级版本 (1.5.7)。预览不会产生付费 Terraform 版本的费用。

    • 可选:PROVIDER_SOURCE:确定部署使用哪个适用于 Google Cloud 的 Terraform 提供程序。设置为 SERVICE_MAINTAINED,以使用 Infra Manager 维护的 Terraform 提供程序。省略此字段可使用 HashiCorp 维护的 Terraform 提供程序。如需了解详情,请参阅使用 Google Cloud的 Terraform 提供程序。

    除非您在预览命令中指定新值,否则部署中的字段(例如 Terraform 配置、变量和服务账号)会自动合并到预览中。

创建预览后,您可以导出并查看结果,以查看部署方案。

使用存储在 Git 代码库中的 Terraform 配置进行预览

更新部署时,某些现有资源可能不会发生变化。预览更新会显示计划预配或删除哪些资源,以及计划不修改哪些资源。

  1. 如果您的 Terraform 配置存储在私有 Git 代码库中,并且您尚未执行此操作,请确保您已使用 Cloud Build 连接到您的 GitHub 主机和 GitHub 代码库,以便为 Infra Manager 提供对代码库的访问权限。
  2. 如需更新部署,请执行以下操作:

    
        
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    gcloud infra-manager previews create projects/PROJECT_ID/locations/LOCATION/previews/PREVIEW_ID \
    --service-account projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT \
    --deployment=projects/PROJECT_ID/locations/LOCATION/deployments/DEPLOYMENT_ID \
    --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 \
    --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 运行的项目相同。
    • DEPLOYMENT_ID 是要更新的部署的部署标识符。
    • 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 版本。如果您移除此可选标志,Infra Manager 会使用现有部署的 Terraform 版本,或默认使用受支持的最新免费层级版本 (1.5.7)。预览不会产生付费 Terraform 版本的费用。

    • 可选:PROVIDER_SOURCE:确定部署使用哪个适用于 Google Cloud 的 Terraform 提供程序。设置为 SERVICE_MAINTAINED,以使用 Infra Manager 维护的 Terraform 提供程序。省略此字段可使用 HashiCorp 维护的 Terraform 提供程序。如需了解详情,请参阅使用 Google Cloud的 Terraform 提供程序。

除非您在预览命令中指定新值,否则部署中的字段(例如 Terraform 配置、变量和服务账号)会自动合并到预览中。

创建预览后,您可以导出并查看结果,以查看部署方案。

后续步骤