了解 DevOps 工具:Ansible 和 Terraform

已发表: 2021-08-31

Ansible 和 Terraform——听说过这些 DevOps 工具吗? 本文是关于它们及其差异的全部内容。

基础架构即代码(IaC)是 DevOps 领域的核心部分,是 DevOps 工程师必须具备的核心技能。 IaC 用于使用机器可读定义文件的配置代码来配置和管理 IT 基础架构。 使用这种针对运营的软件工程方法,您可以使用编程脚本自动化 IT 基础架构。

当 DevOps 工程师考虑在 DevOps 中使用代码实现自动化时,总是会突出显示两个 DevOps 工具,即 Terraform 和 Ansible。 两者都是 DevOps 领域中评价最高且使用广泛的工具。 但是很多人对这些工具不熟悉,不知道它们之间的主要区别。 在本文中,我将讨论 Terraform、Ansible 及其主要区别。

什么是 Terraform?

Terraform 是由 HashiCorp 创建的作为代码软件工具的开源基础设施。 您可以通过在 Terraform 中使用非常易于使用的声明性语言来编排完整的 IT 基础架构。 在 Terraform 中,您需要为基础设施声明和配置必要的资源。 然后,它将处理所有必需的依赖项并为您构建基础架构。

Terraform 仅在几年前于 2014 年推出,但该工具的采用率非常惊人。 它提供了出色的功能,可以简化 IT 基础架构的完整编排,因为在大型组织中配置整个基础架构非常复杂。 您还可以将此工具与所有流行的云提供商集成,例如 AWS、GCP 等。

大多数 IT 组织为不同的团队提供不同的工作环境,因此开发、分段或 QA 和生产团队将拥有各自独立的环境。 一段时间后,管理生产环境并不容易。 为了简化管理,组织使用 Terraform 对生产环境中的所有内容进行编码。 通过使用 terraform,您可以非常快速地旋转开发人员和暂存环境,这与生产环境非常相似。 这有助于在与生产类似的平台上开发和测试应用程序。

星巴克、Slack、Uber 等许多大型组织都在大量使用 terraform 功能。

以下是 Terraform 的一些优点:

  • 使用简单的 GUI 管理服务。
  • 使用简单的语言(声明性)描述 GCP、AWS、Azure 和其他的基础架构。
  • 支持基于角色的访问控制 (RBAC) 以确保安全。
  • 它可以使用 OpenStack、Azure、AWS、GCP 的 API 轻松配置
  • 它遵循无主架构,因此没有用于跟踪所有配置更新的主节点。
  • 组织内的团队可以使用 terraform 注册表轻松地在基础架构上进行协作。
  • 与 GitLab、Jenkins、Travis 等持续集成平台集成以部署 DevOps 管道很容易。

什么是 Ansible?

Ansible 是 DevOps 域中的一个配置管理工具,用于自动化所有 IT 任务。 Ansible 也是一个开源工具,它使用声明式和过程式语言进行配置管理。 这个工具得到了所有流行的云提供商的大力支持,它使应用程序、网络、基础设施、安全、容器等自动化。它显着降低了 DevOps 流程的复杂性,因此许多 DevOps 工程师更喜欢使用这个工具。

Ansible 通过使用简单的 YAML 配置文件(人类可读)轻松自动化最复杂的基础架构。 它使用 YAML 编写的代码文件来执行配置管理; 此代码文件称为 Ansible Playbook。 Ansible 是无代理的,并且有一个主服务器来推送管理和更新远程服务器上的应用程序所需的所有配置。

在 Ansible 中,您需要使用 SSH 连接到 IT 基础架构中的节点。 一旦与节点的连接成功,Ansible 就会使用 Ansible 模块推送最新的配置来安装或更新或删除应用程序。 您还可以选择在 Ansible 中运行临时命令,以快速执行小任务。

以下是 Ansible 的一些优点和特性:

  • 由于 Ansible 是无代理的,因此您无需在节点上安装和运行代理即可执行任务。
  • 由于 Ansible 是基于 Python 构建的,因此它在 Python 中提供了大量的库,这就是它对开发人员非常友好的原因。
  • 使用 SSH 提供安全身份验证。
  • Ansible Tower 提供企业级可视化功能。
  • master 发送远程服务器上的最新配置来执行基础设施的更改,因此它支持基于推送的模型。
  • 它使用人类可读的 YAML 文件进行配置管理,因此不需要额外的编码技能。

Terraform 与 A​​nsible:差异

编排与配置管理

Ansible 是一个配置管理工具,而 Terraform 是一个编排工具。 这是 Terraform 和 Ansible 之间最根本的区别。 尽管这些工具之间的某些功能是共同的,但它们仍然彼此不同。

Ansible 用于添加、更新、删除和管理 IT 基础架构的配置,而 Terraform 用于声明基础架构组件并在多个云提供商之间进行编排。

程序性与声明性

Terraform 使用声明性配置语言来声明 IT 基础架构的资源。 Ansible 使用过程和声明性语言进行配置管理。 Ansible 中使用程序化方式来运行临时命令并达到所需的基础架构配置。 ansible 模块使用声明性方法。

可变与不可变基础设施

您可以使用 Ansible 创建可变基础架构,使用 Terraform 创建不可变基础架构。 Ansible 在同一台服务器上管理和配置基础设施的软件。 当您推送更多配置更新时,生产环境会变得复杂并导致许多难以识别和修复的错误。

Terraform 主要为服务器上的任何部署使用新的 Docker 映像。 Terraform 创建一个新的 docker 镜像来更新基础设施上的任何软件,在所有服务器上部署该镜像,并删除旧的配置 docker 镜像。 因此,即使经过多次配置更新,环境仍然保持稳定。

大师与无大师

Ansible 有一个主机架构,负责存储完整的基础架构状态并将新的配置更新推送到远程服务器上。 这就是为什么它在 ansible 中被称为基于推送的部署模型。

在 Terraform 中,没有单独的主系统。 但是,当它通过 API 与 GCP、AWS 等云提供商合作时,API 服务器就是这种情况下的主机。

社区

相比之下,Ansible 的社区要强于 Terraform。 例如,Ansible 在 GitHub 上有 45 个分支、49.7K 星、51,836 次提交和 21K 分叉,而 Terraform 有 183 个分支、28.7K 星、28,778 次提交和 6.9K 分叉。 目前,这两种工具的社区正在迅速发展。

选择哪一个,Ansible 还是 Terraform?

我会说这不是苹果对苹果的比较。 这个问题的答案取决于业务需求。 您可以使用 Ansible 进行配置管理,添加 Terraform 来编排 IT 基础架构。 如果您的组织与云提供商合作,使用 Terraform 将是更好的选择。 这两种工具都有其局限性和优势,并且都是 DevOps 领域中的流行工具。 因此,根据您要解决的问题陈述,您可以选择其中任何一种工具。

这是一个比较表,总结了 Ansible 和 Terraform 之间的差异。

标准Ansible 地形
成立于2012 2014
由开发Ansible Inc./红帽公司哈希公司
写在Python
类型配置管理工具编排工具
使用程序性和声明性语言使用声明性语言
基础设施支持可变基础设施支持不可变的基础设施
生命周期管理是的
包装和模板完全支持部分的
虚拟机配置和网络部分的完全支持

社区和支持

49K+星28K+星

结论

这就是关于 Ansible、Terraform 及其差异的全部内容。 这两种 DevOps 工具都在生产环境中得到高度使用,并且通常存在于大多数大型组织中。 那你还在等什么? 继续选择更适合您组织的业务需求的工具。 您可以从学习其中一种工具开始,但同时了解这两种工具可以让您在多元化行业中获得优势。

你可能喜欢:

适用于您的 DevOps 项目的最佳包托管存储库。