Ansible和Terraform以及Puppet这三者如何选择

在“DevOps”世界中,组织正在使用基础架构即代码 (IAC) 实施或构建流程。AnsibleTerraformPuppet 允许企业扩展和创建可重复的配置,以测试和执行程序以持续确保正确的结果。我们将更深入地研究这三者之间的差异。指导您选择最适合您需求的平台。这三个都是高级平台,用于部署具有高度复杂要求的可复制和重复应用程序。比较这些应用程序在配置管理、架构和编排方面的异同,并做出明智的决定。

Ansible和Terraform以及Puppet这三者如何选择

基础设施即代码

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

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

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

有多种 IAC 工具可供选择,其中三个主要示例是 Ansible、Terraform 和 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 和 Terraform 有一些关键的区别,但两者也有一些相似之处。当我们查看两个 DevOps 概念时,它们会有所不同:编排和配置管理,它们是工具的类型。Terraform 是一个编排工具。Ansible主要是一个配置管理工具(CM);它们的表现不同,但确实有一些重叠,因为这些功能不是相互排斥的。针对各种用途和优势进行了优化,将这些工具用于各种情况。

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

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

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

程序性与声明性

DevOps  分为两类来定义其操作:“声明式”和“程序式”。由于存在重叠,并非每个工具都适合这种模具。Procedural 定义了一个需要精确方向和程序的工具,您必须在代码中进行布局。声明式是指一种工具“声明”确切需要什么。它没有概述获得结果所需的过程。

在这种情况下,Terraform 完全是声明性的。有一个定义的环境。如果该环境有任何改变,它会在下一个“Terraform Apply”中得到纠正。简而言之,该工具会尝试达到系统管理员所描述的所需最终状态。Puppet 也旨在以这种方式进行声明。
使用 Terraform,您只需要描述所需的状态,Terraform 就会自动计算出如何从一种状态进入下一种状态。

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

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

比较配置

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

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

使用 Terraform 进行配置:

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

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

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

使用 Ansible 进行配置:

Ansible 可以可靠地配置最新的云平台、网络设备、裸机服务器、虚拟主机和管理程序。

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

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

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

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

使用 AWS 的 Terraform:

对于没有大量虚拟化经验的用户来说,Terraform 是管理 AWS 的绝佳方式。尽管起初感觉​​很复杂,但 Terraform 已经大大减少了阻碍提高采用率的障碍。

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

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

使用 AWS 的 Ansible:

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

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

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

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

Ansible、Puppet 和 Terraform 的比较

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

您可以找到以下三者之间的详细比较:

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

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

在查看了上述比较之后,Ansible 对于以类似脚本的方式存储和配置系统非常有利,而不是其他方式。用户可以在短暂的环境中高效工作。它还可以与 Kubernetes 无缝协作以配置容器主机。

Puppet 在社区支持方面更加成熟。Puppet 具有出色的模块,使其能够更多地作为企业级解决方案工作。其强大的模块测试易于使用。Ansible 适用于小型、临时和快速部署。鉴于 Puppet 被推荐用于长期或更复杂的部署,并且可以管理 Docker 容器和 容器编排器Terraform 在管理服务器下方的云服务方面表现更好。Ansible 擅长配置软件和机器;Terraform 擅长管理云资源。在为自动化设计 IAC 环境时,这三者都有其优点和局限性。成功取决于知道哪些工具用于哪些工作。

文章链接: https://www.mfisp.com/5986.html

文章标题:Ansible和Terraform以及Puppet这三者如何选择

文章版权:梦飞科技所发布的内容,部分为原创文章,转载请注明来源,网络转载文章如有侵权请联系我们!

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。

给TA打赏
共{{data.count}}人
人已打赏
IDC云库

Kubernetes监控:获得全栈可见性

2022-4-21 11:09:22

IDC云库

如何找出网站的WordPress主题?

2022-4-21 12:30:54

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
客户经理
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索

梦飞科技 - 最新云主机促销服务器租用优惠