我即将开始一个新的项目,部分需要部署大约三个不同类别的许多相同的节点:
所有节点都将在Ubuntu 10.04的实例上运行,不过它们将安装不同的软件包。
我对以前的项目有一些熟悉,尽pipe我不认为自己是专家。 为了做尽职调查,我一直在研究其他的可能性。 我们有许多内部人员是木偶使用者,他们鼓励我去看看。
不过,我在评估这两种select方面遇到了麻烦。 厨师和木偶分享许多相同的领域术语 – 包装 , 资源 , 属性等等,他们有一个共同的历史,源于对相同的问题采取不同的方法。 所以在某种意义上它们是非常相似的。 但是我发现的大部分比较信息,就像这篇文章 ,有点过时了。
如果你今天开始这个项目,你会问自己什么问题来决定是否应该使用Chef或Puppet进行configurationpipe理? (注意:我不想回答“我应该使用厨师还是木偶?”)
木偶和厨师都可以做你想要的东西。 你最好的办法就是开始做你正在做的事情,决定你最喜欢哪一种工具。 我想你必须要问的很大的问题是:
你想要一个DSL吗? – 厨师食谱用ruby书写,木偶有DSL。 厨师和傀儡之间最大的区别之一是DSL是好是坏。 您发布到bitfield咨询比较的链接有一些关于这个你应该阅读,如果你还没有好评论。 我也发现这个博客文章很有用,请确保你阅读了评论。
你知道ruby吗? – 如果你不知道ruby,开始与厨师开始可能会更难,或需要更多的时间投入,因为你需要学习一种新的语言。 木偶有自己的语言 ,很容易上手。 从傀儡2.6开始, 清单也可以用ruby书写 。
在2009年的开源大桥上,他们有一组作者和厨师,puppet,bcfg2,cfengine和automateit的代表,您可以在bliptv上观看 1.75小时的configurationpipe理实用程序。
Opscode / Chef也会在常见问题解答中介绍它与木偶的区别。
我认为你不知道正确的问题可能源于你没有太多的经验与他们任何一个工作,一旦你开始使用他们,你会开始看到他们之间的差异。 我会build议带着一些真正的生活问题,你会用厨师或傀儡解决,然后开始试图解决他们,看看你喜欢/不喜欢他们。 通过Opscode / Chef,他们提供了一个托pipe的解决scheme ,您可以免费设置5个节点开始。
首先让我说 – 如果你不使用木偶或厨师, 没有错误的答案。 要么比现在要做的要好得多。
作为一个团队领导,我为我的团队做出了Puppet的select。 如果我只是我自己的一个团队,我会select厨师。 原因如下:
虽然我的专业知识当然是在系统pipe理,我的背景是编程。 这就是我上学的原因,对于编写完整的应用程序(不仅仅是脚本)我并不陌生。 虽然我不知道Ruby,但我想,厨师本来是一个很好的借口去学习。
但是,除了偶尔的shell脚本外,我的团队中充满了几乎没有编程经验的系统pipe理员。 对他们来说,编写一个puppet模块就像写一个configuration文件一样。 这是声明式的,没有迭代器,整体上它更友好。
充满开发者进行系统pipe理活动的团队倾向于select厨师。 由于Puppet的DSL是声明式的,所以顺序(即使在单个文件中)也没有关系,并且使许多人习惯于更典型的编程语言。
我也听说过很多次,厨师比Puppet更友好,但Puppet在过去的一年里把他们的Puppet Enterprise产品作为重点。 我无法从产品的云能力方面获得经验。
由于上述特质,刻板印象(通常是正确的)是,你会发现Puppet在物理机器上的企业中更普遍,Chef掌pipe云中的初创企业。 当然也有例外,但是我所看到的肯定是背道而驰的。
如果是一个人的团队,那么评估一下,select一个你喜欢的人。 但是,如果像我一样,你有一个团队,确保你的团队的需求优先于任何个人喜好,当你尝试和买入时,它会节省你。
充分的披露,我们不使用这两个,虽然我们在内部评估他们,而试图决定configurationpipe理系统。 所以不要认为我是这些毕竟的专家。
等等。 但你可以很容易地自己回答这些问题:设置它们! 每个产品的开发和运行都需要几个小时的时间,并且考虑到无论你使用什么样的产品都可能会使用很长时间,那么这个时间是值得的。 您不仅可以了解他们如何处理平台特定的事情(例如,基于Debian和apt,基于RPM和yum),但它肯定会帮助您了解应用程序。
请记住,世界上的所有function都不能弥补一个困难的界面,另外,它可能会暴露特定于您的基础设施的问题 – 也就是说,如果以不同的顺序更新configuration文件会发生什么情况比预期的?
所以这是我的build议。 厨师和木偶并不是一件容易的事情,只有一台服务器和一两个客户端的设置,会给你两个第一手的经验。 另外,如果你开始设置它并且意识到这是一个巨大的痛苦,那么在做出承诺之前,你已经有了这方面的知识。
如果你的项目中有人已经有了Puppet的经验,那么我build议你使用Puppet。
厨师和木偶是相当相似的,而且这两个项目同样是高质量的。 如果您有权访问已经拥有Puppet体验的用户,请使用Puppet。
以上这些绝对是一个很好的指导方针,每当我考虑一个新的第三方依赖时,我也想问这些一般的问题。
这些是项目整体成功的良好指标,可以在一定程度上预测寿命。
尝试find已经使用厨师或木偶两个月以上的人,并询问他们的经验。
对我来说,这与特定社区的传统密切相关。 历史上厨师更接近RubyOnRails家伙。 在ROR社区也是厨师大受欢迎,因为Engineyard在厨师的基础上build立了他们的基础设施。