什么是 Terraform 以及它为何如此强大

已发表: 2024-03-12

配置管理是 DevOps 方法的重要组成部分,Ansible、Chef、Puppet、Terraform 或 SaltStack 等工具是软件开发生态系统的核心。
地形

Terraform 是下一代配置编排系统的示例,它带来了新的特性和功能层。 让我们来看看 Terraform 是什么以及它为何如此受欢迎。

Terraform 是一种配置编排工具,可与任何云(无论是私有本地云还是公共系统)配合使用,并允许安全、便捷地设计、管理和改进基础设施即代码。 作为 Hashicorp 堆栈(还包括 Vagrant、Packer、Consul、Vault 和 Nomad)的一部分,Terraform 有助于将用任何语言编写的任何应用程序配置到任何基础设施。

以下是使用 Terraform 代替 Ansible、Chef、Puppet 或 SaltStack 的好处:

  • 编排,而不仅仅是配置
  • 不可变的基础设施
  • 声明性代码,而非过程性代码
  • 仅客户端架构

下面我们将更详细地解释为什么这如此重要。

Terraform,服务器编排工具

所有上述工具都是为服务器配置而创建的,这意味着它们的主要目标是在现有服务器上安装和管理软件。 Terraform 更专注于服务器配置,而软件容器部署则留给 Docker 或 Packer。 当整个云基础设施被视为代码并且所有参数都组合在声明性配置文件中时,团队的所有成员都可以轻松地对其进行协作,就像他们对任何其他代码所做的那样。

Terraform 咨询服务可以极大地提高服务器配置和基础设施管理的效率,确保与 Docker 或 Packer 等现有工具无缝集成以进行软件容器部署。 当利用 Terraform 与专家咨询相结合时,团队可以通过将其视为代码来简化其云基础设施管理,从而实现更顺畅的协作和优化的资源利用率。

不可变的基础设施

对于 Chef、Salt、P​​uppet 或 Ansible,任何软件更新都必须就地运行。 因此,每台服务器在其整个生命周期中都会生成唯一的更新记录。 当这些配置中的差异导致错误时,这通常会导致所谓的配置漂移,这些错误可被用作漏洞利用和安全漏洞。 Terraform 通过利用不可变的基础设施方法解决了这个问题,其中任何参数的每次新更新都会创建一个单独的配置快照,这意味着需要部署新服务器并取消配置旧服务器。 这样,更新开发环境就可以顺利、轻松且完全防错,而返回到以前的配置之一就像选择配置快照并根据它配置新环境一样简单。

声明式代码风格

虽然 Chef 或 Ansible 强迫您编写逐步的程序指令以达到所需的状态,但 Terraform、Salt 或 Puppet 更喜欢描述系统所需的最终状态,而工具本身则负责实现设定的目标。 为什么更好? 因为相当有限数量的模板可以满足所有配置管理需求,并且包含的​​原语允许构建复杂但干净且模块化的代码。 使用程序代码,您需要考虑最近发生的所有事件和过程,以便编写清晰的指令。 使用 Terraform,您只需命令该工具对系统当前的活动状态执行某些操作,这就是为什么代码库仍然非常小且易于理解。

仅客户端架构

Terraform 利用云提供商的 API 来配置基础设施,从而无需额外的安全检查、运行单独的配置管理服务器和多个软件代理。 Ansible 通过 SSH 连接来实现这一点,但功能相当有限。 由于通过 API 工作,Terraform 提供了几乎无穷无尽的各种操作。 这在安全性、可维护性和整体易用性方面要好得多。

地形的缺点

由于 Terraform 是一个相对较新的工具,它还远未达到完美。 例如,该提供商曾经修复了 Terraform 点火提供商中的一个错误,并删除了 JSON 中的缩进,这迫使重新创建所有先前配置的基础设施。

另一个需要注意的重要事项是,使用此编排工具时必须有一个指挥者,因为从具有不同 Terraform 版本的不同终端执行相同的操作可能会导致不可预测的结果。 协作和治理方面出现了明显的问题,到目前为止,这些问题仍有待解决。 这几乎将使用代码库的 DevOps 工程师的数量限制为一名(或轮班工作的单个终端)。

Terraform 的第三个缺陷是,它是在仅考虑云部署的情况下开发的,而 Salt、Ansible、Puppet 等同类产品则可以很好地与裸机服务器配合使用,因为它们是在 5 年前开发的,没有采用纯云方法。头脑。 这使得 Terraform 配置编排工具真正针对特定领域,而不是一刀切的解决方案。

但我们确信,在未来几年内,所有错误都将得到修复,所有问题都将得到解决,从而进一步增强 Terraform 无可置疑的优势。

Terraform 的优势

除了上述优点之外,您还必须牢记 Terraform 的两个主要优点:

  • 超级可移植性——您可以使用一种工具和一种语言来描述 Google 云、AWS、OpenStack 和任何其他云的基础设施。 更换提供商不再是一件令人头疼的事情。
  • 轻松进行全栈部署——您可以让 Amazon 实例在您的工作负载中运行 Kubernetes 容器,并通过一个工具管理整个系统。

我们认为 Terraform 是当今最好的配置编排工具之一。 它可能还不如其他工具那么受欢迎,但我们坚信它将在未来几年引起巨大的关注。 我们认为 Vagrant 和 Consul 的创建者再次展示了他们的专业知识并交付了出色的产品。

结论

作为开源项目,Terraform 聚集了强大且充满热情的开发者社区,推动其不断发展。 我们相信,随着时间的推移,这个工具将会变得更好、更受欢迎。 这不会是 Chef、Ansible 或 Puppet 的垮台,它只会在 DevOps 工具包中占据应有的位置。