Ansible vs Puppet

2024 年 8 月 29 日 | 4 分钟阅读

Ansible 和 Puppet 正迅速成为管理大量服务器的重要组件。它们通常被称为配置管理和远程执行工具。

这些非常有用的应用程序允许管理员同时在多台服务器上执行操作,并单击一下部署多个应用程序。它使得配置和维护数千台服务器变得更加容易。在进一步行动之前,请先浏览一下 Ansible 和 Puppet。

Ansible

Ansible 是一个开源 IT 引擎,可自动执行应用程序部署、云配置、内部服务编排和其他 IT 工具。

Ansible 易于部署,因为它不使用客户端的任何 代理自定义安全 基础设施,而是通过将模块推送到客户端。这些模块在客户端本地执行,并将输出推回 Ansible 服务器。

它可以使用 SSH-Keys 轻松连接到客户端,从而简化整个过程。客户端详细信息,例如主机名IP 地址SSH 端口,存储在称为清单文件的文件中。如果您创建并填充了清单文件,那么 Ansible 就可以使用它。

Ansible 使用剧本 (playbook) 来描述自动化作业,而剧本使用简单的语言,即 YAML。YAML 是一种人类可读的数据序列化语言,通常用于配置文件,但它可用于许多存储数据的应用程序。

一个显著的优点是,即使是 IT 基础设施支持人员也可以阅读和理解剧本,并在需要时进行调试。

Ansible 专为多层部署而设计。 Ansible 不会一次管理一个系统,它通过描述所有系统相互关联来模拟 IT 基础架构。 Ansible 完全是无代理的,这意味着 Ansible 默认通过 SSH 连接您的节点。 Ansible 为您提供了选择,如果您需要另一种连接方式,例如 Kerberos

Puppet

Puppet 是一种配置管理工具,用于配置、部署和管理服务器。它还执行以下功能,例如

  • 它为每个主机定义不同的配置,并且持续检查并确认所需的配置,例如它是否已就位并且未在主机上更改。(如果更改,它们将恢复到所需的配置)。
  • 机器的动态向上和向下扩展。
  • 它提供对所有已配置机器的控制,因此集中式更改会自动传播到所有机器。

Puppet 使用主从架构,其中主服务器和从服务器通过 SSL 帮助的安全加密通道进行通信。

以下是 Ansible 和 Puppet 之间的一些主要区别

参数AnsiblePuppet
可用性Ansible 使用单个活动节点运行,该节点称为主实例。如果主节点出现故障,则有一个辅助实例来代替它。Puppet 具有多主架构。如果活动主节点出现故障,则另一个主节点将取代活动主节点的位置。
易于设置Ansible 只有运行在服务器上的主节点,而没有运行在客户端机器上的代理。它使用 SSH 连接登录到要配置的客户端系统或节点。客户端机器 VM 不需要唯一的设置。这就是为什么它设置速度更快!Puppet 也有一个主代理架构。Puppet 服务器在主机上运行,Puppet 客户端作为代理在客户端机器上运行。之后,代理和主服务器之间会进行证书签名。这就是为什么它不容易设置。
管理易于管理配置,因为它使用 YAML(Yet Another Markup Language)。服务器将配置推送到所有节点。适用于实时应用程序,并且有即时远程执行。Puppet 不容易管理配置,因为它使用它自己的语言,称为 Puppet DSL。客户端从服务器拉取配置。它完全面向系统管理员,并且没有即时远程执行。
配置语言Ansible 使用 YAML (Python)。它很容易学习,并且面向管理员。Python 内置于大多数 Unix 和 Linux 部署中,因此可以更快地设置和运行该工具。Puppet 使用其 puppet 域特定语言 (Puppet DSL)。它不容易学习,并且面向系统管理员。
互操作性Ansible 服务器必须位于 Linux/Unix 机器上。Ansible 也支持 Windows 机器。Puppet Master 仅在 Linux/Unix 上工作,但 Puppet Agent 也在 Windows 上工作。
价格最多 100 个节点的标准 IT 运营的 Ansible Tower 定价为每年 10,000 美元。这包括 8*5 支持,而高级版提供 24*7 支持,每年 14000 美元。Puppet 的定价范围从每年每个节点 112 美元(采用标准支持计划)到每年每个节点 199 美元(采用高级计划)。
GUIAnsible 在刚开始时只是一个命令行工具。现在它在企业版中有了 UI,但并不完美。有时,GUI 与命令行不同步,并且无法执行与命令行界面相同的事情。Puppet 的图形用户界面比 Ansible 更具交互性。它用于管理、查看和监控更复杂的任务。否则,在需要时也可以选择使用用 Ruby 编写的命令行界面。

下一个主题Ansible 面试题