Puppet还是Chef:配置管理的困境

木偶是模型驱动的,Ruby是程序性的,无一不是大,杂乱,有缺陷的困扰开源生态系统

在过去的几年里,在办公室的比赛计划很简单。这位CEO会说“快”和CTO会说“云”。每个人都会点头说:“当然。”

所有美好的事物走到了尽头。使用带来了积极的词“云”,快乐的氛围给企业员工,因为它承诺从我们的肩膀抬这么多的家务。这些问题要去与云的抽头魔杖网页上的分配魔云药膏申请后融化。

[留在云的顶部与InfoWorld的“云计算深潜“特别报道今天下载|!从亚马逊到Windows Azure,看到精英8点公有云在InfoWorld测试中心的审查如何比较。|对于最新的新闻和事件,订阅云计算报告通讯。]

可惜的是,每个人都发现,云计算本身有许多令人头疼的问题,可以取代它所解决的所有旧问题。问题是,我们现在要为数十台、数百台、甚至数千台机器负责。云让我们可以很容易地部署它们,但现在我们必须照顾它们。这就像关于小猫和流浪狗的古老格言:喂一次,你会永远照顾它们。

在这种情况下,部署数十台、数百台甚至数千台机器的乐趣意味着不久将有数十台、数百台、甚至数千个补丁需要应用,需要修复安全漏洞,需要下载更新。当我们只有几台机器时,这种维护需要几分钟。但如果把这些时间乘以几十、数百或数千分钟,就会产生以天、周、月为单位计算的杂务。

谢天谢地自动化。多年来,智能系统管理者们看着不断膨胀的任务列表,并想出了一个办法,将处理重复性任务编写脚本。他们建立了自己的小型机器人系统管理员做的工作为他们。

艰苦的工作已经凝聚成两个主要的派系,木偶和厨师。还有许多其他值得注意的项目具有可读的名字,比如Bcfg2,但Puppet和Chef似乎是目前最令人兴奋的。

它们都是开源的代码堆栈,旨在使您能够轻松地接触到庞大的虚拟机帝国中的文件。两者都有开放源码市场,供您交换扩展框架和处理特定类型的硬件或软件的插件。它们都很酷,而且都在世界各地的数据中心中找到了自己的家。雷竞技电脑网站现在,这两家公司都建立了围绕开源核心销售援助的公司。

模式和程序是否有区别?没有在最抽象的意义。他们都将指令发送到配置或重新配置你的机器的集合。而“重新配置”通常是指安装库或其他文件的新版本。

但是,这个世界充满了派系,每当我们接近一个统一的谐波收敛,人类分裂成竞争的群体。人类找到某种方式碎裂。

在这种情况下,争论的焦点是语言。Chef是用Ruby和Erlang编写的,您可以用纯Ruby来编写规范或扩展,纯Ruby是完全但显然不纯的语言的子集,有时也被称为a特定领域的langauge。该子集会给你只是足够的绳子吊死自己。

木偶,而另一方面,拥有自己的语言捆绑在一起所有的安装要求与大括号包。这是一个有点像JSON,但有条件的运营商,并增加了乐趣的面向对象的类结构。如果你不喜欢它,木偶开始让你写在你的Ruby 2.6的规格版本之后。

它可能不是花太多时间担心语言是一个好主意 - 真正的区别在于更深。木偶代码是依赖关系木偶解释的列表。你可能会说,“B之前安装,”你可以说你这个代码的任何地方。木偶会发现它,并确保一个先加入。

厨师,在另一方面,是更加透明。你最好确保了安装的部分安装B,因为厨师如下它给出的说明部分之前。

哪款更适合你?幸运的是,还有人写长文章的远见争论。一,我喜欢是史蒂夫Traugott和兰斯·布朗的“为什么顺序是有意义的:图灵等价于自动化系统管理”厨师爱好者喜欢它说,所有那些依赖变成一个疯狂的混乱,不鼓励连贯性。安德鲁·克莱Shaefer认为在他的博客中,大部分的时间我们足够聪明,做正确的事与木偶并利用其权力为好不是混乱 - 当它不除。我还是不能让我的心灵。

系统架构在任何情况下,木偶和厨师都是很容易的,一旦你涉水通过语法回暖。他们都已经编译这些指令并保持的机器应该已安装的跟踪自己的客户机/服务器体系结构。木偶坚持在其所谓PuppetDB和Hiera数据存储的指令。厨师使用的Postgres,Solr的,并且其内部结构的混合物,以跟踪哪些客户端计算机应该做的。

这些数据库最终维持目录上的庞大的机器帝国的状态。他们跟踪不同的文件,库,可执行文件,配置和其他细节。然后,当你按下按钮,他们发送的重新配置清单,各种机器,让他们的电流。

例如,通常会为您的企业定义一些标准配置,并要求这些工具中的任何一个准备好将它们安装到新机器上。您可能有一个邮件服务器或Hadoop节点。当创建新的机器或实例时,Puppet或Chef将提供需要安装的文件列表。

这些列表往往是从各种插件的。许多最有趣的工作是在这些子项目完成。一旦你木偶或厨师运行,你会花大部分的时间着迷的插件。

这两种环境中大量竞争对方,所以它的共同为他们相互重叠的创新。既打后,我不能说,一个是明确优于其他。如果你想要做的事情之一,你通常可以完成与其他同样的任务或来八九不离十。

在一般情况下,你可以使用与大多数主要操作系统或者工具。木偶不来与Mac安装向导,但它与大多数的Unix做它会与Mac OS X的工作。厨师更容易在Mac上使用,但仍然建立一个用于Windows的完整安装程序,与许多不同的变体的工作。

虽然我们在Mac和Windows的话题,这是值得注意的是,一些公司正在使用这些工具来管理在不同的办公室桌面安装。木偶实验室,该公司背后的木偶,指出,洛斯阿拉莫斯国家实验室使用木偶来管理其Mac电脑。

无论您使用的是台式机或服务器的工具,你也可以通过一些模块的状态和发展状况所左右。木偶企业,例如,提供对VMware的支持力度。如果特定版本的云堆栈运作良好,并在模块经得起考验的,你应该选择它。

木偶实验室与Opscode公司更难的问题是在两家公司的商业模式中做出选择。两家公司都通过销售其他产品来资助开源软件的开发。在Puppet的例子中,Puppet Labs免费发布了一个相当贫血的开源版本。如果您厌倦了命令行,您可以升级到Puppet Enterprise,并逐步升级到可工作的图形用户界面、更好的访问控制和支持。Puppet Enterprise对前10个节点是免费的,之后每个节点的成本约为99美元。当您的云扩展到成百上千个节点时,适度的折扣就会出现。

(值得一提的是,通过计算数字证书木偶吻合节点用于加密和签名的所有命令,加密同时保护的流经你的帝国指令的全部,并给出了公司良好的方法来跟踪你正在使用的多少软件。)

主公司Opscode为您提供了另一种选择。它将取代免费开源的Chef,让你在防火墙后面安装更强大的私人Chef,价格从每月120美元起,最多20个节点。该公司不计算单个节点,并含糊地承诺,如果您偶尔使用21或22个节点,它会以另一种方式处理。它不关心测试,只关心持续使用。没有很多层,所以跨越门槛会增加你的账单。

如果在您的防火墙内配置Chef是一个您不需要的麻烦,那么Opscode将以几乎相同的价格为您托管Chef服务器基础设施。它确保有足够的厨师火力来处理管理你的工蜂机器的工作。

有些人可能会觉得这个愚蠢的和潜在的安全漏洞。要重新配置自己的机器,你把你的指令,你的基础设施来托管厨师机,并根据需要它包裹他们到你自己的机器。但它也有一定的道理,因为保持厨师跑又是一个苦差事和Opscode公司愿意为你做它。这一切都只是浮云​​,什么是你的,什么是他们模糊了越来越多的线。

配置configurers当我打得四处木偶和厨师,我一开始就碰上了困扰所有的计算机软件系统,但特别是困扰大型开源生态系统像木偶和厨师典型bitrot麻烦。是的,这些生态系统的创意精彩的源泉,但他们也摩擦的来源为所有创造性的天才脑袋在不同的方向。从理论上讲,你可以保持在多个模块堵塞和你的系统会越来越好,但在现实中,他们开始为不同版本的必备模块的竞争。该软件不在一起一样容易,乐高积木塞。

例如,在安装了几个模块之后,我的Puppet版本开始抱怨它被Java_KS库的0.0.6版本卡住了,它将其标记为“无效”。pe_mcollective库想要的是Java_KS的0.0.3版本,它不打算接受最新的0.0.6版本,即使那是所有自命不凡的人认为很酷的版本。为了获得笑容,我尝试了puppet模块升级命令,它有时可以工作,但无法降低我的级别。它很聪明地意识到,模块的最新版本(1.0.0)也不能满足pe_mcollective库的抱怨。我估计我和Puppet和Chef在一起的90%的时间都花在了满足他们对配置的抱怨上。

这是一个软件开发深发行,每个人都在抱怨,他们不管是否正在运行Linux或Microsoft的。在一篇博客文章中解释他为什么切换到Mac上,指出开源开发米格尔·德·伊卡萨谈到Mac时说“我没有错过不必追适当的包我现在的Linux版本,或者求爷爷告奶奶包的东西。二进制文件只是工作。”

为了公平起见,当我在我的Mac安装厨师,我是有将之前安装大量其他图书馆“只是工作。”从A选择搁置安装指南引入nokogiri,一个XML解析器,在这里值得注意:

在木偶和厨师的世界里,我经常发现自己使用的软件对我来说并不是“很好用”,至少在我摆弄得更久之前是这样。我不得不一次又一次地重新安装模块。软件失败、失败、失败,然后由于无法解释的原因完美地工作,这种情况并不罕见。把玻璃看成是半满的,我可以说这个软件一直在试图自我修复并安装正确的模块。这意味着它可以在失败的过程中自我修复,然后在下一次成功。

换句话说,准备好编写代码,或者至少像开发人员那样思考,同时处理所有的库。Chef文档中有一个页面解释“足够的Ruby用于Chef”。如果您正在使用Puppet,那么您将需要弄清楚如何使用定制语言,除非您尝试使用Ruby重新编写任务。

之前得到太多这些无休止的微小毛刺惹恼了,这是值得记住的替代方法:访问几十个,几百个,甚至几千个机器的运行或重新运行相同的脚本。木偶和厨师是突飞猛进比编写自己的脚本,并试图让他们更好地规范。他们是按钮工具,用于管理什么仍然是非常一个命令行的游戏,需要命令行代码。

许多人会抱怨在开放源码模块的世界中,与各种插件作者进行交互是件麻烦事。但是使用开放源码模块迫使内部用户标准化他们的脚本,并构建一个通常有更好的文档记录和更容易理解的体系结构。换句话说,使用模块带来了规则。

是的,你仍然有无尽的内部和外部冲突。是的,你会在Ruby或者JSON的领域特定版本的工作。是的,在命令行将会是它的一个重要组成部分。但是,所有这些结构会带来一些为了您已经等待被维持,甚至升级云机的庞大帝国。

这种结构是为什么人最终都恨和爱的工具,如厨师和木偶。他们复杂的,有时甚至令人抓狂无情的,但他们带来了所需的纪律来维护所有这些我们买服务器。我们创造了他们与云的魔法,而现在我们需要一些云酱淋在他们保持这种神奇的活着。

这篇文章中,“Puppet还是Chef:配置管理的困境,最初发表于InfoWorld.com。按照最新的发展应用程序开发,云计算开源在InfoWorld.com上。了解最新的商业技术新闻,请跟随InfoWorld.com的Twitter

了解更多关于数据中心雷竞技电脑网站在InfoWorld的数据中心雷竞技电脑网站频道。

这个故事,“木偶或厨师:配置管理困境”最初发表信息世界

加入对网络世界的社有个足球雷竞技app区Facebook的LinkedIn对那些顶级心态的话题发表评论。

版权©2013Raybet2

IT薪资调查:结果在