Ansible vs Terraform vs Puppet差异比较:有什么区别?选择哪个?

2021年11月27日04:42:35 发表评论 3,891 次浏览

Ansible vs Terraform vs Puppet有什么区别?在“DevOps”世界中,组织正在使用基础设施即代码 (IAC) 来实施或构建流程。Ansible、Terraform 和 Puppet 允许企业扩展和创建可重复的配置,以测试和执行程序以持续确保正确的结果。

我们将更深入地研究Ansible vs Terraform vs Puppet差异比较。指导你选择最适合你需求的平台。这三个都是用于部署具有高度复杂要求的可复制和重复应用程序的高级平台。

比较这些应用程序在配置管理、架构和编排方面的异同,并做出明智的决定。

Ansible vs Terraform vs Puppet差异比较:有什么区别?选择哪个?
Ansible vs Terraform vs Puppet哪个更好

基础设施即代码

十多年前推出的基础设施即代码 (IAC)概念  是指管理和配置计算机数据中心的过程。这是一种管理数据中心服务器、网络基础设施和存储的策略。其目的是显着简化大规模管理和配置。

IAC 允许通过机器可读的定义文件配置和管理计算机数据中心,而无需配置工具或物理硬件。简单来说,IAC 将手动配置、构建指南、运行手册和相关过程视为代码。由软件读取,即维护基础设施状态的代码。

IAC 旨在解决配置漂移、系统不一致、人为错误和上下文丢失,解决所有这些潜在的严重问题。这些过程过去需要相当长的时间;现代 IAC 工具使所有流程更快。它消除了手动配置步骤,并使它们具有可重复性和可扩展性。它可以显着更快地加载数百台服务器。它允许用户获得可预测的架构并自信地维护数据中心的配置或状态。

有多种 IAC 工具可供选择,其中三个主要示例是 Ansible、Terraform 和 Puppet。他们都有自己独特的优势和劣势,我们将进一步探讨。

Ansible vs Terraform vs Puppet差异比较:有什么区别?选择哪个?

Terraform、Ansible 和 Puppet 的简短背景

在我们开始比较工具之前,请参阅下面的简要说明:

  • Terraform(2014 年发布 - 当前版本 0.12.8):  Hashicorp 将Terraform开发  为基础架构编排器和服务提供者。它与云无关,支持多个提供商。因此,用户可以使用相同的编程语言和配置结构来管理多云或多产品环境。它使用 Haschorp 语言并且与其他工具相比非常用户友好。
  • Ansible(2012 年发布 - 当前版本 2.8.4):  Ansible 是一个强大的工具,用于利用各种类和配置方法将服务和服务器置于所需状态。此外,它还可以通过包装器模块连接到不同的提供者来配置资源。用户更喜欢它,因为它在编码方面是轻量级的,具有快速部署能力。
  • Puppet(2005 年发布 - 当前版本 6.8.0):  Puppet 是可用的最古老的声明式所需状态工具之一。它是基于服务器/客户端的,通过目录刷新客户端上的状态。它使用“hiera data”,一种强大的元数据配置方法。它通过将基础设施定义为代码的能力来强制使用程序进行系统配置。它在 Windows 或 Linux 上被广泛用于同时在多个应用程序服务器上拉取字符串。

编排与配置管理

Ansible vs Terraform vs Puppet差异比较:Ansible 和 Terraform 有一些关键的区别,但两者也有一些相似之处。当我们查看两个 DevOps 概念时,它们有所不同:编排和配置管理,它们是工具类型。Terraform 是一个编排工具。Ansible 主要是一个配置管理工具(CM);它们的表现不同,但确实有一些重叠,因为这些功能并不相互排斥。针对各种用途和优势进行了优化,在各种情况下使用这些工具。

编排工具 有一个目标:确保环境持续处于“理想状态”。Terraform 就是为此而构建的,因为它存储环境状态,并且当某些功能无法正常运行时,它会在重新加载后自动计算并恢复系统。它非常适合需要恒定不变状态的环境。“Terraform Apply”旨在有效解决所有异常情况。

配置管理工具不同;他们不会重置系统。相反,他们在本地修复问题。Puppet 具有在服务器上安装和管理软件的设计。与 Puppet 一样,Ansible 也可以配置每个动作和工具,并确保其正常运行而不会出现任何错误或损坏。CM 工具用于修复问题,而不是完全更换系统。在这种情况下,Ansible 有点混合,因为它可以同时执行编排和替换基础架构。Terraform 使用更广泛。它被认为是卓越的产品,因为它具有先进的状态管理功能,而 Ansible 则没有。

这里要知道的重要一点是这里有一些功能重叠。大多数 CM 工具可以在一定程度上进行配置,反之亦然,许多配置工具可以进行一些配置管理。现实情况是,不同的工具更适合某些类型的任务,因此这取决于你的服务器的要求。

程序性与声明性

Ansible vs Terraform vs Puppet有什么区别?DevOps 工具 分为两类,用于定义其操作:“声明性”和“程序性”。由于存在重叠,并非每个工具都适合此模具。程序定义了一个工具,它需要你必须在代码中布局的精确方向和程序。声明性是指“声明”确切需要什么的工具。它没有概述获得结果所需的过程。

在这种情况下,Terraform 完全是声明性的。有一个明确的环境。如果该环境有任何改变,则会在下一次“Terraform Apply”中得到纠正。简而言之,该工具试图达到系统管理员所描述的所需最终状态。Puppet 也旨在以这种方式进行声明。
使用 Terraform,你只需要描述所需的状态,Terraform 将弄清楚如何自动从一个状态转到下一个状态。

或者,在这种情况下,Ansible 有点像混合体。它可以同时做一点。它执行实现过程式配置的临时命令,并使用大多数以声明式执行的模块。

如果你决定使用 Ansible,请仔细阅读文档,以便了解它的作用并了解预期的行为。必须知道是否需要增加或减少资源以获得正确的结果,或者是否需要明确指出所需的资源。

比较配置

Ansible vs Terraform vs Puppet哪个更好?自动化任何基础设施的配置是应用程序及其部署的整个操作生命周期自动化的第一步。在云中,软件从 VM、Docker 容器或 裸机服务器运行。Terraform 或 Ansible 都是供应此类系统的不错选择。Puppet 是较旧的工具,因此我们将仔细研究用于管理多个服务器的较新 DevOps 程序。

Terraform 和 Ansible 以不同的方式处理配置过程,如下所述,但存在一些重叠。

使用 Terraform 进行配置:

Terraform 现有的声明性模型中没有表示某些行为。通过以下方式使用 Terraform 时,此设置增加了大量的不确定性和复杂性:

当 Terraform 模型是计划的一部分时,它无法对供应商的操作进行建模。它需要协调比正常 Terraform 使用成功所需的更多细节。

它需要额外的措施,例如授予对用户服务器的直接网络访问权限、安装必要的外部软件以及颁发用于登录的 Terraform 凭据。

Ansible vs Terraform vs Puppet差异比较:有什么区别?选择哪个?

使用 Ansible 进行配置:

Ansible vs Terraform vs Puppet差异比较:Ansible 可以可靠地供应最新的云平台、网络设备、裸机服务器、虚拟化主机和管理程序。

完成引导后,Ansible 允许不同的团队将节点连接到存储。它可以将它们添加到负载均衡器、任何安全补丁或其他操作任务。这种设置使 Ansible 成为任何流程管道的完美连接工具。

它有助于自动将裸基础设施纳入日常管理。使用 Ansible 进行配置,允许用户在配置管理、应用程序部署和编排中无缝使用通用的、人类可读的自动化语言。

Ansible vs Terraform vs Puppet差异比较:有什么区别?选择哪个?

适用于 AWS 的 Ansible 和 Terraform 之间的差异

AWS 代表 Amazon Web Services,是亚马逊的子公司,为个人、公司和商业实体提供按需云计算平台。Terraform 和 Ansible 对 AWS 管理的处理完全不同。

使用 AWS 进行Terraform改造:

对于没有很多虚拟化经验的用户来管理 AWS,Terraform 是一种极好的方式。尽管一开始可能会感觉很复杂,但 Terraform 已经大大减少了阻碍采用的障碍。

将 Terraform 与 A​​WS 结合使用时,有几个显着的优势。

  • Terraform 是开源的,它带来了使用开源软件的所有常见优势,以及它背后不断增长和热切的用户社区。
  • 它对资源关系有内在的理解。
  • 如果发生故障,它们会隔离到相关资源。另一方面,非依赖资源会继续创建、更新和销毁。
  • Terraform 使用户能够在应用更改之前预览更改。
  • Terraform 带有 JSON 支持和用户友好的自定义语法。

使用 AWS 进行 Ansible:

Ansible vs Terraform vs Puppet有什么区别?Ansible 长期以来一直为 AWS 提供重要支持。这种支持甚至允许使用 Ansible playbook 解释最复杂的 AWS 环境。描述后,用户可以根据需要多次部署它们,并能够跨不同区域扩展到数百甚至数千个实例。

Ansible vs Terraform vs Puppet哪个更好?Ansible 拥有近 100 个支持 AWS 功能的模块。例如虚拟私有云 (VPC)、简单存储服务 (S3)、安全令牌服务、安全组、Route53、关系数据库服务、Lambda、身份访问管理器 (IAM)、AMI 管理和 CloudTrail 等等。此外,它还包括 1300 多个附加模块,用于管理用户 Linux、Windows、UNIX 等的不同方面。

以下是将 Ansible 与 AWS 结合使用的优势。

  • 借助 Ansible Tower 的云库存同步,无论 AWS 实例如何启动,你都将准确地找到注册了哪些 AWS 实例。
  • 你可以通过其生命周期准确跟踪已部署的基础设施来控制库存。因此,你可以确保系统管理正确,安全策略正确执行。
  • 自动化的安全性及其基于角色的访问控制集确保用户只能访问他们完成工作所需的 AWS 资源。
  • 相同的简单剧本语言可以管理基础设施,并可以轻松地将应用程序大规模部署到不同的基础设施。

Ansible vs Terraform vs Puppet差异比较

Puppet、Terraform 和 Ansible 已经存在了相当长的一段时间。但是,它们在设置、GUI、CLI、语言、用法和其他功能方面有所不同。

Ansible vs Terraform vs Puppet差异比较:有什么区别?选择哪个?
Ansible vs Terraform vs Puppet有什么区别

你可以在下面找到三者之间的详细比较:

差异点AnsiblePuppetTerraform
管理和调度在 Ansible 中,即时部署是可能的,因为服务器将配置推送到节点。在调度方面,企业版 Ansible Tower 拥有免费版所没有的功能。Puppet 主要关注推送和拉取配置,客户端从服务器拉取配置。配置必须用 Puppet 的语言编写。在调度方面,Puppet 的默认设置允许它检查所有节点以查看它们是否处于所需状态。  在 Terraform 中,资源调度器的工作方式与提供者类似,使其能够向它们请求资源。因此,它不仅限于 AWS 等物理提供商,还允许在层中使用。Terraform 可用于配置到调度网格,以及设置运行调度程序的物理基础设施。
易于设置和使用Ansible 更易于安装和使用。它有一个没有代理的主机,在客户端机器上运行。它是无代理的这一事实极大地促进了它的简单性。Ansible 使用 YAML 语法,用 Python 语言编写,内置于大多数 Linux 和 Unix 部署中。Puppet 更受模型驱动,适用于系统管理员。Puppet 服务器可以安装在一台或多台服务器上,而 puppet 代理需要安装在所有需要管理的节点上。因此,该模型是客户端-服务器或代理-主模型。安装时间可能需要大约十到三十分钟。Terraform 在设置和使用方面也更容易理解。如果需要运行安装程序,它甚至允许用户使用代理服务器。
可用性:Ansible 有一个辅助节点,以防活动节点出现故障。Puppet 有一个或多个 master,以防原来的 master 失败。不适用于 Terraform 的情况。
可扩展性:可扩展性更容易实现可扩展性不太容易实现可扩展性相对容易实现
模块Ansible 的存储库或库称为 Ansible Galaxy。它没有单独的排序功能,需要人工干预。Puppet 的存储库或库称为 Puppet Forge。它包含近 6000 个模块。用户可以将 Puppet 模块标记为 Puppet 批准或支持,从而节省大量时间。在 Terraform 的情况下,模块允许用户抽象出任何可重用的部分。这些部分可以配置一次,可以随处使用。因此,它使用户能够对资源进行分组,以及定义输入和输出变量。
GUI开发较少的是 Ansible 的 GUI,最初是作为命令行工具引入的。尽管企业版提供了一个 UI,但它仍然没有达到预期,因为它会遇到与命令行同步的问题。Puppet 的 GUI 优于 Ansible,能够执行许多复杂的任务。用于有效管理、查看和监控活动。只有第三方 GUI 可用于 Terraform。例如,Codeherent 的 Terraform GUI。
支持Ansible 还为其企业版提供了两个级别的专业支持。此外,AnsibleFest 是用户和贡献者的大型聚会,每年举行一次。与 Puppet 相比,它背后的社区更小。Puppet 有专门的支持门户和知识库。此外,还存在两个级别的专业支持;标准版和高级版。Puppet 社区每年都会发布一份“DevOps 状态”报告。Terraform 通过 Web 门户提供对 HashiCorp 支持渠道的直接访问。
Ansible vs Terraform vs Puppet有什么区别

需要考虑的三个综合解决方案

查看上述Ansible vs Terraform vs Puppet差异比较后,与其他方式相比,Ansible 非常有利于以类似脚本的方式存储和配置系统。用户可以在短期环境中高效工作。它还可以与 Kubernetes 无缝协作以配置容器主机。

Ansible vs Terraform vs Puppet哪个更好?Puppet 在社区支持方面更加成熟。Puppet 具有卓越的模块,使其能够更像企业级解决方案一样工作。其强大的模块测试易于使用。Ansible 适用于小型、临时和快速部署。而 Puppet 被推荐用于长期或更复杂的部署,并且可以管理 Docker 容器和 容器编排器。

在管理服务器下的云服务时,Terraform 表现更好。Ansible 擅长配置软件和机器;Terraform 擅长管理云资源。

在为自动化设计 IAC 环境时,这三者都有其优点和局限性。成功取决于知道哪些工具用于哪些工作。

木子山

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: