本页面介绍了如何使用 Infrastructure Manager 预配 Terraform 配置中定义的一组Google Cloud 资源。
如需在不预配资源的情况下预览部署,请参阅预览部署。
您可以部署到多个项目和多个位置。服务账号需要对部署资源的资源和项目拥有权限。如需查看权限列表,请参阅使用 IAM 进行访问权限控制。
本页面假定您熟悉 Terraform。如需了解详情,请参阅 Terraform 和 Infra Manager。
准备工作
- 启用基础设施管理器。
- 确保您拥有创建部署所需的 IAM 权限:
roles/config.admin
。 - 确保您拥有具有所需权限的服务账号。如需了解详情,请参阅配置服务账号。
- 确定要部署的 Terraform 配置。确保此 Terraform 配置符合限制。具体而言,请确保配置不包含敏感数据。
- 如果您想在配置资源之前预览部署,请参阅预览部署。
- 确认贵组织在与预期基础设施关联的产品方面的配额。如果您的预期基础架构超出了组织针对部署所用产品的配额,您可能会遇到部署错误。如需了解详情,请参阅配额和限制。
授予特定于配置的权限
如需部署 Terraform 配置中指定的 Google Cloud 资源,您用于调用 Infra Manager 的服务账号需要具有特定于所部署资源的必需权限。
除了使用 Infra Manager 服务所需的权限之外,还需要这些权限。
如需详细了解如何为 Google Cloud 资源授予权限并确保您有权访问所需项目,请参阅配置服务账号。
将私有 Git 代码库和主机连接到 Cloud Build
如果您要从私有 Git 代码库部署 Terraform 配置,则需要将 Git 主机和代码库连接到 Cloud Build。
GitHub
GitHub Enterprise
GitLab
GitLab Enterprise
Developer Connect
使用 Terraform 配置创建部署
您可以使用 Infra Manager 以多种方式部署 Terraform 配置:
- 建议:使用 Google Cloud 控制台中的 Infrastructure Manager 选择来源、查看部署详细信息、预览和部署 Terraform 配置。您可以使用 Google Cloud 控制台中的 Infra Manager 从 Cloud Storage 存储分区和 Git 代码库进行部署。
- 使用 Google Cloud CLI 中的 Infra Manager 部署来自以下位置的 Terraform 配置:
- Cloud Storage 存储桶
- Git 代码库
- 本地目录
如需查看可与 Infra Manager 搭配使用的示例和模板 Terraform 配置,请参阅适用于 Google Cloud的 Terraform 模块和蓝图。
选择您所选工作流对应的标签页,详细了解如何创建部署。
控制台
本部分介绍了如何在 Google Cloud 控制台中使用 Infra Manager 部署 Terraform 配置。
- 在 Google Cloud 控制台中,前往 Infra Manager 页面。
- 点击创建以创建新的部署。
在部署详情页面上,为部署设置初始参数。
您需要进行如下替换:
- 部署 ID:在部署 ID 字段中,输入部署的描述性名称。 如需详细了解命名限制,请参阅部署名称文档。
- 地区:从下拉列表中选择一个支持的地区。
- Terraform 版本:从下拉菜单中选择受支持的 Terraform 版本。系统会根据您选择的区域自动填充可用 Terraform 版本的列表。
- 服务账号:选择现有服务账号或创建新服务账号。Infra Manager 会根据 Terraform 配置中概述的基础设施自动验证权限。如需详细了解如何使用服务账号和 Infra Manager,请参阅配置服务账号。
- Terraform 配置的来源:点击切换开关,选择 Git 或 Cloud Storage 作为要部署的 Terraform 配置的来源。
- 对于 Git,请替换:
- Git 代码库:提供公开或私有的 Git 代码库网址、分支或标记。
如果您提供的是私有 Git 代码库,请确保您已将主机和代码库连接到 Cloud Build。 - 可选:Git 目录:Git 代码库中包含 Terraform 配置的目录。
- 可选:Git 参考:配置的 Git 参考。如果您未指定引用,则系统会使用 Git 仓库的默认配置分支。
- Git 代码库:提供公开或私有的 Git 代码库网址、分支或标记。
- 对于 Cloud Storage 存储桶,请替换:
- 来源:存储配置的存储桶的名称。
- 对于 Git,请替换:
在 Terraform 详细信息页面上,使用键和值字段填充 Terraform 配置中的输入值列表。
这些值可以是 Terraform 配置中的任何输入值,包括默认情况下未定义的值。如果您的所有输入值都在 Terraform 配置中默认定义,则这些值是可选的。点击继续。
在高级详细信息页面上,为部署设置可选参数。
您需要进行如下替换:
- 标签:标签和注释是包含自由格式文本的键值对。您可以使用它们来附加与资源关联的任意信息。如需了解详情,请参阅注释文档。
- 工作器池:Cloud Build 作业将在其中执行的工作器池资源。
工作器池的格式为
projects/{project}/locations/{location}/workerPools/{workerPoolId}
。 - 工件 Cloud Storage 存储桶:Cloud Build 日志和工件在 Cloud Storage 中的位置。路径的格式为
gs://{bucket}/{folder}
。
- 点击创建部署以开始部署 Terraform 配置。在部署页面上,您的部署将添加到列表中,并显示其状态。 如需详细了解您的部署,请选择相应部署以前往部署详情页面。
- 大功告成!您已使用 Infra Manager 部署 Terraform 配置。
点击继续。
gcloud CLI
本部分介绍如何部署存储在 Cloud Storage 存储桶中的 Terraform 配置。借助存储桶,您可以控制对配置的访问权限。
- 确保 Terraform 配置位于 Cloud Storage 存储桶中。如需了解详情,请参阅将配置上传到存储桶。
如果存储桶与运行 Infra Manager 的项目位于不同的项目中,则您需要确保 Infra Manager 的服务账号具有该存储桶的读取权限。如需了解更多详情,请参阅配置服务账号。
如果存储桶与 Infra Manager 位于同一项目中,则系统已启用对该存储桶的读取权限。
部署 Terraform 配置:
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。 部署 Terraform 配置:
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 管理文件。
部署 Terraform 配置:
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 提供程序。