Hashicorp Terraform 是一种基础设施即代码 (IaC) 工具,可让您预配和管理云基础设施。Terraform 提供了称为提供程序的插件,可让您与云服务提供商和其他 API 进行交互。您可以使用适用于 Google Cloud 的 Terraform 提供程序(Google Cloud 提供程序)来预配和管理 Google Cloud 基础设施。
使用 Terraform 的优势
本部分介绍了使用 Terraform 预配和管理 Google Cloud 基础设施的一些优势:
- Terraform 是预配 Google Cloud 基础设施并实现其自动化的最常用工具。您可以借助 Google Cloud 提供程序使用相同的声明式语法和工具来配置和管理所有 Google Cloud 资源。
- Terraform 可让您为基础设施指定自己偏好的最终状态。然后,您可以多次部署同一配置,以创建可重现的开发、测试和生产环境。
- 借助 Terraform,您可以生成执行计划,以指明 Terraform 在应用配置时将执行的操作。这样可以在通过 Terraform 修改基础设施时避免出现意外情况。
- Terraform 可让您以模块的形式打包和重复使用通用代码。模块提供了用于创建云资源的标准界面。它们通过提高可读性来简化项目,并允许团队以可读块形式组织基础设施。此外,Google Cloud 还发布了许多可部署的针对性模块作为蓝图,并发布了使用入门示例作为快速起步解决方案。
- Terraform 会记录基础架构的当前状态,并可让您有效地管理状态。Terraform 状态文件会跟踪部署中的所有资源。
使用 Terraform
Terraform 具有面向配置的声明性语法,您可以使用它来编写要预配的基础设施。使用此语法,您可以在 Terraform 配置文件中为基础设施定义自己偏好的最终状态。然后,使用 Terraform CLI 基于配置文件预配基础设施。
以下步骤说明了 Terraform 的工作原理:
- 在 Terraform 配置文件中描述您要预配的 Google Cloud 基础设施。您无需编写代码来描述如何预配此配置。
- 运行
terraform plan
命令,以评估配置并生成执行计划。您可以查看计划并根据需要进行更改。 - 然后,运行
terraform apply
命令以执行以下操作:- 在后台调用相应的 Google Cloud API,以基于您的执行计划预配基础设施。
- 创建一个 Terraform 状态文件,该状态文件是配置文件中的资源与实际基础设施中的资源的 JSON 格式映射。Terraform 使用此文件来了解基础设施的最新状态,并确定何时创建、更新和销毁资源。
- 之后,当您运行
terraform apply
时,Terraform 会使用状态文件中的映射将现有基础设施与代码进行比较,并根据需要进行更新:- 如果状态文件中不存在配置文件中定义的资源对象,则 Terraform 会创建该资源对象。
- 如果状态文件中存在资源对象,但其配置与配置文件不同,则 Terraform 会更新该资源以与配置文件匹配。
- 如果状态文件中的资源对象与配置文件匹配,则 Terraform 会使该资源保持不变。
Google Cloud 提供程序
有两个提供程序可让您预配和管理 Google Cloud 基础设施:
google
:使用此提供程序预配和管理 Google Cloud API。google-beta
:使用此提供程序预配和管理 Google Cloud Beta 版 API。
如需了解如何使用这些提供程序,请参阅 Google Cloud 提供程序配置参考。
google
和 google-beta
提供程序使用名为“Magic Modules”的工具开发。借助 Magic Modules,贡献者可以对单个代码库进行更改,并同时开发 google
和 google-beta
提供程序。
您可以按照 Magic Modules 贡献指南中的说明,使用 Magic Modules 为 Google Cloud 提供程序进行贡献。
后续步骤
- 了解如何使用 Terraform 在 Compute Engine 上创建基本 Web 服务器
- 了解如何将 Terraform 状态存储在 Cloud Storage 存储桶中
- 查看各种适用于 Google Cloud 的 Terraform 示例
- 查看适用于 Google Cloud 的 Terraform 模块和蓝图