本指南重点说明了 Terraform 工具需知,以便程序员可以安全高效地构建和更改基础架构并对其进行版本控制。
Terraform 是由 HashiCorp 创立的开源“基础架构即代码”工具。
Terraform 是一种声明式工具,可以让开发人员用 HCL(HashiCorp 配置语言)高级配置语言来描述用于运行应用程序的"最终状态"云或本地基础架构。 它随后会生成用于达到该最终状态的计划,并执行该计划以供应基础架构。
由于 Terraform 使用的语法很简单,能够跨多个云和本地数据中心供应基础架构,并且能够安全高效地重新供应基础架构以响应配置更改,因此它是目前最受欢迎的基础架构自动化工具之一。 如果贵组织计划部署混合云或多云环境,那么您可能希望或需要了解 Terraform。
为了更好地了解 Terraform 的优势,首先需要了解基础架构即代码 (IaC) 的优势。 IaC 允许开发人员以让供应自动化、更快速和可重现的方式来整理基础架构。 它是版本控制、持续集成和持续部署等敏捷和 DevOps 实践的关键组成部分。
基础架构即代码可以在以下方面提供帮助:
请参阅“什么是基础设施即代码?” 以进一步了解:
开发人员之所以选择使用 Terraform 而不是其他“基础架构即代码”工具,有以下几个理由:
Terraform 模块是可协同使用的多个基础架构资源的小型可复用 Terraform 配置。 Terraform 模块很实用,因为它可以通过可复用且可配置的构造来自动使用复杂资源。 甚至编写一个非常简单的 Terraform 文件,也可作为模块。 模块可调用其他模块(称为子模块),因此可以更快、更简练地组装配置。 也可以在同一配置或不同配置中多次调用模块。
Terraform 提供程序是实现资源类型的插件。 提供程序包含代表用户认证和连接到服务(通常从公有云提供商进行连接)所需的全部代码。 您可以查找适用于所用云平台和服务的提供程序,并将其添加到配置中,然后使用其资源来供应基础架构。 为几乎所有主流云提供商、SaaS 产品以及由 Terraform 社区或单个组织开发和/或支持的产品都提供了相应的提供程序。 请参阅 Terraform 文档 (链接位于 ibm.com 外部)以获取详细列表。
有时候,很容易混淆 Terraform 与 Kubernetes 以及它们的实际用途。 事实上,这二者并非竞争关系,而是可以高效地协同工作。
Kubernetes 是一个开源容器编排系统,可让开发人员将部署安排到计算集群中的节点上,并主动管理容器化工作负载以确保其状态符合用户的意图。
另一方面,Terraform 是一款基础架构即代码工具,覆盖范围更广,让开发人员可以自动完成跨越多个公有云和私有云的基础架构。
Terraform 可以自动执行和管理基础架构即服务 (IaaS)、平台即服务 (PaaS),甚至软件即服务 (SaaS) 级别的功能,并可以在所有这些提供程序之间并行构建所有这些资源。 您可以使用 Terraform 来自动供应 Kubernetes - 特别是云平台上管理的 Kubernetes 集群 - 并自动将应用程序部署到集群中。
Terraform 和 Ansible 都是“基础架构即代码”工具,但两者之间存在一些明显的差异:
IBM Cloud Schematics 是基于 Terraform 的 IBM 免费云自动化工具。 IBM Cloud Schematics 可让您全面管理基于 Terraform 的基础架构自动化,以便您可以投入更多的时间来构建应用程序,并减少构建环境的时间。
了解有关如何使用 IBM Cloud Schematics 的更多信息。
有关 Terraform 的更多信息,请注册一个 IBMid 并创建 IBM Cloud 帐户。