我想了解Puppet和Ansible之间的区别,尤其是与Ansible相比,Puppet有哪些局限性。换句话说,为什么有些人从木偶转移到Ansible?

评论

我保留了我的答案将与此分开,原因之一可能是红帽在其中投资的全部资金。

#1 楼

当然,Puppet,Ansible,Chef都有各自的优点和缺点,并在此处添加您喜欢的工具。因此,我将尽量避免发表意见,并分享事实上的Ansible优势。

将Ansible置于首位的主要功能是不必依赖于某些习惯/在目标节点上运行的其他代理,而不是仅在ssh连接上建立。是的,它仍然需要ssh服务器,节点上的Python和一堆Python库,并且如果您选择的发行版(或者,幸运的是,有一些Windows节点)不附带它们,那将有点痛苦的引导。但这不太可能,甚至可能使您重​​新考虑发行版。

这将简化监视过程,不会占用更多资源,也不会强制系统始终以root用户身份运行守护程序,并且在UNIX哲学中,总的来说感觉更好。 Chef拥有chef-solo,Puppet可以在没有管理员的情况下运行,但是它们分别通过克隆和通过钩子来“反向执行”。使用Ansible时,源存储库中的合并可以以我们都熟悉的方式触发部署,无论是在Jenkins中,在git master中还是在诸如Rundeck之类的其他工具中。

评论


值得一提的是,如果您用ansible搞砸了ssh配置,那么您就被锁定在机器之外,这就是推模型的缺点。木偶或厨师可以处理crontab作业,因此它们对系统的影响不会超过可用的Python代码

–滕西拜
17 Mar 6 '17 at 21:31

关于代理的说明:我的安全团队批准了我在HSE(高安全性环境)中加入Ansible的想法,即使在无主配置的情况下,也拒绝了Chef和Puppet。在某些情况下,无代理是制胜法宝。

–林地猎人
17 Mar 30 '17 at 17:32

如果您破坏了SSH设置,则无论如何您都将遇到Ansible以外的问题。在运行之前,在各种环境中测试诸如SSH更改之类的东西是DevOps的良好实践,并且在编写SSH配置时还可以验证SSH配置是否正确-Ansible模板模块使此操作非常容易。

– RichVel
17年8月7日在12:08

我听说有人争论说Ansible的无代理架构使其更适合于管理例如路由器,您无法在其中安装Puppet代理。但是,此类设备是否带有Python解释器?也许不是,Python真的对Ansible管理的每个组件都有强烈的要求吗?

– Drux
17年12月8日在8:46

@Drux Ansible在目标系统(包括路由器)上并不总是需要Python解释器。在目标是服务器的情况下,几乎所有模块都需要Python(或Windows的PowerShell)。对于网络设备,它可以使用SSH,HTTPS,NETCONF或其他协议,并且许多网络供应商已正式支持Ansible模块-有关更多信息,请参见有关网络自动化的Ansible文档。

– RichVel
20-10-14在13:04



#2 楼

不,从Puppet迁移到Ansible的人们(反之亦然)与这两种工具可以或不能实现的事情无关。 Puppet / Chef / Ansible-基本上是一个品味问题。

例如,Ansible基于Python,并且Python开发人员通常对此感到更自在(无需学习DSL),或者Ruby(适用于Chef))。 Python开发人员也更容易扩展Ansible。但是,从本质上讲,它们在实现目标上都非常相似。有些在某些方面具有相对优势,而在其他方面则具有劣势,但通常根据团队的风格/文化/偏好来选择它们。

#3 楼

在Puppet 4.0之前,还没有一种简单的方法来协调分布在多个服务器或服务上的应用程序,因为很难在Puppet中对操作进行专门排序,这是一种设计选择。 Ansible在协调和排序步骤方面比较擅长,尤其是在多台服务器之间。在步骤顺序错误可能导致错误的情况下,通过重复执行这些步骤直到无法达到最终的一致性,这一点尤其重要。

这不再是问题,因此区别在很大程度上基于首选项。

评论


木偶的设计选择是Chef开始的原因之一,几年前,我确实将主要工作移交给了Chef,用于我们的基础结构和CD系统。

–滕西拜
17 Mar 6 '17 at 21:32

Puppet编排仅是Puppet Enterprise(商业)功能,而Ansible中的编排则在开源版本中。通常,Ansible比Puppet更容易安装和学习-对两者进行了一些评估之后,我现在使用Ansible。也存在其他差异,因此这不仅仅是个人喜好问题。

– RichVel
17年8月7日在12:05

我在以前和现在的工作中都使用Ansible,但是它有其自身的问题。我越用Ansible,就越有兴趣学习另一种替代方法。我希望这种替代方案不要使用Python进行模块开发,而要拥有活跃的重要开源社区。对Ansible的拔出请求几乎要花费一年的时间才能进行审查。以这种速度,它可能是专有的。

–吉里·克劳达(Jiri Klouda)
17年8月8日在22:41



很多人抱怨人偶代理,但是当您在云中并且需要自动伸缩组并且您不想重建虚拟机的映像时,将虚拟机连接到人偶主服务器是一件好事,但我看不到任何问题有一个小代理商。

–c4f4t0r
18/12/7在16:28