HashiCorp Terraform 是一种基础设施即代码 (IaC) 工具,可让您预配和管理云基础设施。Terraform 提供了称为提供程序的插件,可让您与云服务提供商和其他 API 进行交互。您可以使用适用于 Google Cloud的 Terraform 提供程序来预配和管理 Google Cloud 资源,包括 Cloud Build。
本页介绍了如何将 Terraform 与 Cloud Build 搭配使用,包括 Terraform 工作原理简介,以及一些有助于您开始搭配使用 Terraform 与 Google Cloud的资源。您还可以找到指向 Cloud Build 的 Terraform 参考文档、代码示例以及有关使用 Terraform 预配 Cloud Build 资源的指南的链接。
如需了解如何开始使用 Terraform for Google Cloud,请参阅安装和配置 Terraform 或 Terraform for Google Cloud 快速入门。
Terraform 的工作原理
Terraform 具有面向配置的声明性语法,您可以使用它来描述要在 Google Cloud 项目中预配的基础架构。在一个或多个 Terraform 配置文件中编写此配置后,您可以使用 Terraform CLI 将此配置应用于您的 Cloud Build 资源。
以下步骤介绍了 Terraform 的工作原理:
- 在 Terraform 配置文件中描述您要预配的基础设施。您无需编写代码来描述如何预配基础设施。Terraform 会为您预配基础设施。
- 运行
terraform plan
命令,以评估配置并生成执行计划。您可以查看计划并根据需要进行更改。 -
运行
terraform apply
命令以执行以下操作:- 在后台调用相应的 Cloud Build API,以根据您的执行计划预配基础架构。
- 创建一个 Terraform 状态文件,该状态文件是一个 JSON 文件,用于将配置文件中的资源映射到实际基础设施中的资源。Terraform 使用此文件来记录基础设施的最新状态,并确定何时创建、更新和销毁资源。
-
当您运行
terraform apply
时,Terraform 会使用状态文件中的映射将现有基础设施与代码进行比较,并根据需要进行更新:- 如果配置文件中定义了资源对象,但状态文件中不存在,则 Terraform 会创建该资源对象。
- 如果状态文件中存在资源对象,但其配置与配置文件不同,则 Terraform 会更新该资源以与配置文件匹配。
- 如果状态文件中的资源对象与配置文件匹配,则 Terraform 会使该资源保持不变。
适用于 Cloud Build 的 Terraform 资源
资源是 Terraform 语言中的基本元素。每个资源块描述一个或多个基础设施对象,例如虚拟网络或计算实例。
下表列出了适用于 Cloud Build 的 Terraform 资源:
Cloud Build 服务 | Terraform 资源 | 数据源 |
---|---|---|
Cloud Build v1 | google_cloudbuild_trigger
|
|
Cloud Build v2 | google_cloudbuildv2_connection_iam_policy |
适用于 Cloud Build 的基于 Terraform 的指南
下表列出了适用于 Cloud Build 的基于 Terraform 的操作指南和教程:
指南 | 详细信息 |
---|---|
连接到 GitHub 代码库 | 本指南介绍了如何使用 Terraform 将 GitHub 代码库连接到 Cloud Build。 |
连接到 GitHub Enterprise 主机 | 本指南介绍了如何使用 Terraform 将 GitHub Enterprise 主机连接到 Cloud Build。 |
连接到 GitHub Enterprise 代码库 | 本指南介绍了如何使用 Terraform 将 GitHub Enterprise 代码库连接到 Cloud Build。 |
连接到 GitLab Enterprise Edition 主机 | 本指南介绍了如何使用 Terraform 将 GitLab Enterprise Edition 主机连接到 Cloud Build。 |
连接到 GitLab Enterprise Edition 代码库 | 本指南介绍了如何使用 Terraform 将 GitLab Enterprise Edition 代码库连接到 Cloud Build。 |
连接到 Bitbucket 数据中心主机 | 本指南介绍了如何使用 Terraform 将 Bitbucket 数据中心主机连接到 Cloud Build。 |
连接到 Bitbucket 数据中心代码库 | 本指南介绍了如何使用 Terraform 将 Bitbucket 数据中心代码库连接到 Cloud Build。 |
连接到 Bitbucket Cloud 主机 | 本指南介绍了如何使用 Terraform 将 Bitbucket Cloud 主机连接到 Cloud Build。 |
连接到 Bitbucket Cloud 代码库 | 本指南介绍了如何使用 Terraform 将 Bitbucket Cloud 代码库连接到 Cloud Build。 |
部署到 Compute Engine | 本指南介绍了如何使用 Cloud Build 和 Terraform 在 Compute Engine 代管式实例组 (MIG) 上执行零停机蓝绿部署。 |
适用于 Cloud Build 的 Terraform 模块和蓝图
模块和蓝图可帮助您自动化大规模预配和管理 Google Cloud 资源。模块是一组可重复使用的 Terraform 配置文件,用于创建 Terraform 资源的逻辑抽象。蓝图是一个可部署且可重复使用的模块和政策的软件包,用于实现和记录特定解决方案。
下表列出了与 Cloud Build 相关的模块和蓝图:
模块或蓝图 | 详细信息 |
---|---|
安全的 CI/CD 流水线 | 借助此模块, Google Cloud 客户可以快速部署安全的 CI/CD 流水线,实现向左转移安全性中所述的许多功能。 |
terraform-google-bootstrap |
此模块可帮助引导 Google Cloud 组织,创建开始使用 Cloud Foundation Toolkit (CFT) 所需的所有资源和权限。对于想要将 Cloud Build 和 Cloud Source Repositories 用于基础代码的用户,此模块包含一个用于引导所有必需资源的子模块。 |
后续步骤
- 适用于 Cloud Build 的 Terraform 代码示例
- Google Cloud 上的 Terraform 文档
- HashiCorp 中的Google Cloud 提供商文档
- 适用于 Google Cloud的基础架构即代码