Answers:
当然,Puppet,Ansible,Chef都有各自的优点和缺点,并在此处添加您喜欢的工具。因此,我将尽量避免发表意见,并事实上分享Ansible的优点。
将Ansible置于其他之上的主要功能是不必依赖于在目标节点上运行的某些自定义/附加代理,而仅基于ssh连接即可。是的,它仍然需要一个ssh服务器,节点上的Python和一堆Python库,并且如果您选择的发行版(或者,很幸运,有一些Windows节点)不附带它们,那将有点痛苦的引导。但这不太可能,甚至可能会让您重新考虑发行版。
这将简化监视,不占用额外的资源,不强制系统始终以root用户身份运行守护程序,并且通常在UNIX哲学中感觉更好。Chef具有chef-solo
,Puppet可以在没有管理员的情况下运行,但是它们都通过克隆和分别通过钩子来“反向执行”。使用Ansible时,源存储库中的合并可以以我们都熟悉的方式触发部署,无论是在Jenkins中,在git master中还是在诸如Rundeck之类的其他工具中。
template
模块使此操作非常容易。
不,从Puppet迁移到Ansible的人们(反之亦然)与任何一种工具都可以或不能实现的事情无关。木偶/厨师/ Ansible-大多是口味问题。
例如,Ansible基于Python,并且Python开发人员通常对它有更多的了解(无需学习DSL)或Ruby(对于Chef)。Python开发人员也更容易扩展Ansible。
但从本质上讲,它们在实现目标方面都非常相似。有些在某些方面具有相对优势,而在其他方面则具有劣势,但通常是根据团队的风格/文化/偏好来进行选择。
在Puppet 4.0之前,没有一种简单的方法来协调分布在多个服务器或服务上的应用程序,因为很难在Puppet中对操作进行专门排序,这是一种设计选择。Ansible在协调和排序步骤方面更好,尤其是在多台服务器之间。在步骤顺序错误可能导致错误的情况下,通过重复执行这些步骤直到达到最终的一致性,该错误尤为重要。
这不再是一个问题,因此区别主要是基于偏好。