Articles of 厨师

现有configurationpipe理系统的优点和缺点是什么?

我正在寻找CFEngine , Puppet , Chef , bcfg2 , AutomateIt和其他任何configurationpipe理系统可能在那里的一些比较,而且在服务器故障(Server Fault)的服务器故障(Server Fault)上我可以find很less的东西感到非常惊讶。 例如,我只知道上面的三个链接 – 其他两个我在相关的谷歌searchfind。 所以,我对人们认为最好的或者他们喜欢的东西不感兴趣。 我想知道以下几点: configurationpipe理系统的名称。 为什么创build它(而不是使用现有的解决scheme)。 相对优势。 相对弱点。 执照。 链接到项目和例子。

什么时候适合使用configurationpipe理器(例如Puppet / Chef / Ansible)?

在我目前的工作场所,我照顾两台VMware主机,一台OpenBSD物理机,三台Debian VM和六台Windows Server VM(2008/2012)。 我正在考虑实施一个像Puppet或Chef这样的configurationpipe理工具。 这是合理的,还是将学习工具的开销超过了好处? 可pipe理性和实施成本之间的转折点在哪里?

testing厨师食谱的最佳做法?

我的团队创造了大量的厨师食谱。 我想知道我应该看什么方法和框架,所以我们可以开始创buildtesting,以确保我们的节点configuration正确?

有一个更优雅的方式来远程运行厨师客户端?

这是Chef Fast Start教程推荐的方法: knife ssh name:mynode -a ipaddress -x ubuntu -i mycredentials.pem "sudo chef-client" 这真的很笨拙。 是不是真的没有更好的方法,还是在真正的生产环境中,无论如何都会有节点自动更新?

configurationpipe理:推和基于拉的拓扑

像Puppet和Chef这样的更为成熟的configurationpipe理(CM)系统使用基于拉式的方法:客户端定期轮询中央主站以获取更新。 他们中的一些人也提供了一种无主的方法(所以基于推送),但是声明它不是“生产”(Saltstack)或“不可扩展”(Puppet)。 我知道的唯一一个系统就是从一开始就是基于推动力的是Ansible。 拉式系统的具体可扩展性优势是什么? 为什么添加更多的推拉大师比push-agent更容易? 例如, agiletesting.blogspot.nl写道: 在“拉”系统中,客户彼此独立地联系服务器,所以整个系统比“推”系统更具可扩展性 另一方面,Rackspace展示了他们可以使用基于推送的模型处理15K系统 。 infastructures.org写道: 我们发誓维护基础设施,使用像SUP,CVSup,rsync服务器,或cfengine的工具拉方法。 每台客户端机器不需要将更改推送给客户端,而是需要负责在启动时对黄金服务器进行轮询,然后定期维护自己的rev级别。 在采用这个观点之前,我们开发了基于ssh,rsh,rcp和rdist的广泛的基于推送的脚本。 我们在r命令(或者ssh)中发现的问题是:当你运行一个基于r命令的脚本把一个变化推送到你的目标机器上时,可能性是,如果你有超过30个目标主机,在任何时候都会下降。 维护委托机器的列表成为一场噩梦。 在编写代码来纠正这个问题的过程中,你将最终得到精心devise的包装代码来处理:来自死亡主机的超时; logging和重试死的主机; 分叉并行,尝试在合理的时间内击中多个主机; 最后检测并阻止源机器上所有可用的TCP套接字与所有出站rsh会话的使用情况。 然后,你仍然有问题,就是为将来要安装的所有新主机安装映像,以及为明天将要重build的任何主机重复安装映像。 在经历了基于r-command复制的麻烦之后,我们发现它不值得。 我们不打算再次使用r-命令来pipe理基础架构,或者使用任何其他推送机制来pipe理基础架构。 它们不像基于拉的方法那样成比例。 这不是一个实现问题,而不是一个build筑问题? 为什么编写一个线程化的推式客户端比一个线程化的拉式服务器更难呢?

configurationpipe理工具(Puppet,Chef)能够保持安装的软件包是最新的吗?

对于那些已经在运行configurationpipe理工具的人来说,这可能是一个简单的问题。 像Puppet或Chef这样的configurationpipe理工具是保持已安装软件包最新的正确方法吗? 假设我运行了大量基于Debian和Ubuntu的服务器。 安全更新或错误修复出现时,configurationpipe理工具是否可以更容易地更新从存储库安装的软件包? 我目前运行“无人参与升级” ,让系统自动安装安全更新,但我仍然需要连接到服务器,并经常运行aptitude update && aptitude safe-upgrade 。 自然,这会变得无聊,乏味和容易出错的服务器越多。 像Puppet或Chef这样的工具是保持安装的软件包是否正确的正确方法? 是否有人使用这些工具来避免在15台服务器上手动运行aptitude或同等function? 我相当肯定这些问题的答案是“是的,当然!” 但是我在哪里可以find关于这个特定用例的更多信息? 我还没有时间深入研究木偶或厨师,菜谱或类只是显示安装一个特定软件包(比如ssh)的简单例子。 除了官方文档外,你是否有任何资源可以推荐(当然,只要知道这些工具是否适合我,那么我将研究这些文档)。

如何在食谱中find厨师的环境?

我只想在当前环境为“dev”的情况下运行cookbook_file资源。 这怎么能expression出来? 文档build议这样做: 在一个配方中,像这样的代码块将是有用的: qa_nodes = search(:node,"chef_environment:QA") qa_nodes.each do |qa_node| # Do useful specific to qa nodes only end 但我不知道这就是我想要的 – 事实上这是一个循环似乎是错误的。

厨师和傀儡要花钱吗?

我打算使用厨师或傀儡来做pipe理(我更多地考虑厨师,因为它更年轻,我对它有了更好的感觉)。 在这两个主页上,我看到有一个“企业版”花钱,我不打算购买任何东西。 如果我不买他们,我会在厨师/傀儡中错过什么? 厨师提供的东西究竟是花钱呢? 傀儡报价究竟花费什么? 从他们的网站上我不太清楚,因为它是一种模糊的。

运行厨师服务器而不是厨师独奏有什么好处?

我正在为我的团队寻找自动部署解决scheme,并且在过去的几天里一直和厨师一起玩。 我已经能够使用chef-solo从基本的Red Hat VM上运行一个简单的Web应用程序。 我们的最终目标是在运行构build时使用Chef(或其他系统)自动将应用程序拓扑部署到云中。 我们的过程基本上是这样运行的: 我们的networking应用程序代码,依赖关系和厨师食谱都存储在SCM中 一个构build被执行,并创build一个图像获取和testing一个包 构build引擎然后部署运行厨师客户端的新云图像以安装软件包。 这些图像从SCM或Chef服务器获取食谱,并安装所有东西以启动和运行 获得Chef Server运行的好处和/或用例是什么? 有一个厨师服务器举行,从SCM获取食谱与使用厨师独奏,并有一个脚本,将从SCM拉菜谱有任何主要的好处?

木偶或厨师提供什么优势/特点超过盐(反之亦然)?

我正在考虑推出新的configurationpipe理工具来取代我们自己开发的解决scheme。 事实上的标准是Chef和Puppet,它们都是以Ruby为中心的(尽pipe可以用来部署非Ruby环境)。 我们绝大部分的开发工作都是在Python中完成的,我们的内部部署工具大量使用Fabric 。 所以我正在向Salt学习,因为它也是Python,尽pipe它不像Chef或Puppet那么成熟。 但是由于我对选项不够熟悉,我发现很难比较苹果与苹果。 除了较小的社区,我是否会放弃使用Salt而不是木偶/厨师? 更新 我发布这个问题已经有六个月了。 尽pipe它已经被closures了,但已经被看了1000多次了,所以我想我会评论一下我的经验。 我最终决定了Puppet,因为它有一个更大的社区。 然而,这是一个非常令人沮丧的经验,主要是由于令人费解的Puppetconfiguration语法。 由于我现在有一个比较两个参考的框架,我最近再次看看盐 – 我不回去。 这是非常非常酷的。 我最喜欢的东西: 推拉式configuration模型的无缝集成。 木偶使用拉模式(节点定期轮询服务器更新),并有一个名为木偶的姐妹组件推动变化。 两者对我都很重要,我更喜欢Salt的工作原理。 当你有很多的节点时,Salt也会执行得更快。 configuration语法使用YAML,这是一个简单的文本格式,使用缩进和项目符号点。 您也可以select通过模板使用其他configuration格式。 根据我的经验,这使得盐约10倍容易学习和维护。 基于Python的。 这是我首先看到Salt的最大原因。 它最终成为我留下的一个更小的原因。 但是,如果您是像我们这样的Python商店,那么开发Salt插件会更容易。