Articles of configurationpipe

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

我正在考虑推出新的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插件会更容易。

厨师的最佳做法/问题

我使用和爱Puppet。 我搬到一家新公司,他们正在采用厨师。 所以我想学习厨师,但是拼凑起来很难,因为我仍然认为在木偶=) 这些是我的问题: 在Ruby DSL,JSON或pipe理控制台中设置angular色是否更好? 为什么有多种方式来做同样的事情? 你可以把食谱组织成子目录吗? 例如:我们有自定义的软件,我想写一本食谱,并粘贴到:厨师回购/ cookbooks / ourcompanystuff / customsoftwarecookbook这将是一个很好的做法? 我是否为每种types的angular色创build一个指定它的工作簿? 我是否有这些食谱包括其他食谱(即我的web服务器angular色的食谱包括apache食谱)。 我不知道如何处理食谱相互依赖和inheritance。 有什么像Puppet的外部节点分类器,所以节点自动确定他们的angular色? 似乎你可以configuration刀或pipe理控制台,或编辑JSON文件的东西? 这让我感到非常困惑,为什么有这么多的方式来做事情,这是瘫痪的! 有没有理由使用一个或另一个? 从傀儡来看,似乎用这些工具不小心configuration了一些东西很容易(比如,留下一些东西) 如何在我的开发集群中自动configuration厨师节点? 使用Puppet,我启动了一个虚拟机,连接到puppermaster并启动一个木偶运行并设置自己(angular色由外部节点分类器决定)。 我如何与厨师做这个? 安装带有pem / rb文件的厨师,将其绑定到厨师服务器上,手动告诉节点其在厨师angular色中的angular色,或者在pipe理界面中编辑这个angular色,然后开始厨师 – 客户端运行来设置自己? 我完成了入门教程,我看到他们有EC2教程,但我从来没有使用EC2,所以他们很难跟随。 在这一点上,我主持了Chef的运行,并且开始configuration一个节点。 我从哪里出发? 我是否需要开始查看公共食谱? Opscode上的文档没问题,但几乎没有Puppet的那么好。 在我的search中,有没有其他好的厨师资源?

如何logging服务器更改?

所以我们都可能有这样的情况:你debugging一些问题,只是意识到这是由你六个月前的configuration改变引起的,你不记得你为什么这样做。 所以你撤消它并解决问题,现在还有其他一些问题。 噢,现在我记得! 然后你正确地修复它。 这是因为你没有记下适当的音符,你是个笨蛋! 但是,这样做的好方法是什么? 在工程中,我们有大量的软件可以帮助我们检测和跟踪变化。 源代码pipe理,代码评论等等。 每一个变化都被追踪,每一个变化都需要一个评论。 典型的工程部门需要很好的评论,以便在六个月内弄清楚为什么这样打破它时,可以使用历史上的“责备”特征或二分查找构build来查明问题。 这些工具是非常有效的沟通工具和历史logging。 但是在服务器端,我们有500个不同的服务,都有不同的configuration方式。 他们并不总是有一个文本格式(考虑设置一个文件夹的权限或更改页面文件的位置),虽然他们可能有文字表示。 在我们的环境中,我们检查哪些configuration文件可以join到Perforce中,但是其中很less。 不能完全检查活动目录数据库..虽然也许是一个转储可能diff'd … 在过去,我尝试过在维基上保留一个手动更改日志,但要维持这个纪律是非常困难的(我知道这不是一个好的借口,但确实很难)。 我的问题:你用什么策略和工具来解决跟踪服务器configuration变化的这个问题? – 更新 – 注意:我不是在寻找共享笔记logging工具(我熟悉OneNote等),而是专门用于帮助跟踪服务器更改的自动化工具。 有没有全面的工具来跟踪服务器configuration的变化,但也许有一些特定的应用程序,如GPO的。 另外,我对您发现有用的特定策略非常感兴趣。 “我们在Sharepoint中共享笔记”非常含糊。 你如何保持纪律? 你用什么格式来跟踪你的改变? 你如何组织你的变更数据? 我真的很喜欢例子和想法。

木偶vs厨师,亲和从用户和用例contra

我已经search了一下,阅读了“傀儡或厨师即是问题”的文章。 我对使用案例,真实世界的实现感兴趣,人们在真实的问题基础上select了一个或另一个。 我特别感兴趣的是与皮匠问题的整合 (我知道木偶在这个方向上是一个标准方法)。 作为任何人有任何经验的鞋匠 – 厨师整合 ? 提前致谢

什么不应该由傀儡pipe理?

我通过一般的configurationpipe理学习了自己的方式,特别是使用puppet来实现它,我想知道系统的哪些方面(如果有的话) 不应该用puppet来pipe理。 举个例子,我们通常认为在将系统借给傀儡pipe理之前已经build立了主机名。 基本的IP连接,至less在用来联系木偶大师的networking上,必须工作。 使用木偶来自动创buildDNS区域文件是诱人的,但DNS反向指针应该已经在启动东西或证书将是有趣的。 那么我应该从puppet中去掉IPconfiguration吗? 还是应该在第一次启动木偶之前设置它,但是仍然用木偶pipe理ip地址? 有多个IP的系统(如WAN,LAN和SAN)呢? 怎么样IPMI ? 你可以用ipmitoolconfiguration它的大部分(如果不是全部的话),从而避免获得控制台访问权限(物理,串口over LAN,远程KVM等等),这样就可以通过puppet实现自动化。 但重新检查每个傀儡代理商的状态对我来说听起来并不酷,而在进行其他任何事情之前,基本的进入系统的灯光是我想要的。 另一个故事是关于安装更新。 我不是在这个具体的问题上,SF和许多不同的系统pipe理员之间的哲学已经有很多问题了。 我自己,我决定不让木偶更新东西(比如只ensure => installed ),并且像我们习惯的那样手动进行更新,而当我们对木偶更有信心的时候,这个任务的自动化将会更晚。通过添加MCollective混合)。 这些只是我脑海中的一些例子。 系统的任何方面都应该放在傀儡拿不到的地方吗? 或者换句话说,在系统configuration时应该设置什么和在系统中“静态”configuration之间的界限,以及通过集中configurationpipe理来处理什么?

为什么在Red Hat和CentOS的主要版本之间升级如此困难?

“我们可以将现有的生产EL5服务器升级到EL6吗?” 来自两个完全不同环境的客户提出的一个简单的要求促使我回答“是的,但需要协调重build所有系统 ”。 这两个客户都觉得,对系统进行彻底的重build对于停机和资源的原因来说是不可接受的select。当被问及为什么有必要完全重装系统时,我没有一个好的答案,“这就是……” 我并不是想引起关于configurationpipe理的反应(“木偶一切 ” 并不总是适用 ),或者客户应该如何计划好。 这是一个现实世界的例子,在生产能力上已经发展壮大,但是没有看到转向下一个版本操作系统的干净path。 环境A: 拥有40台Red Hat Enterprise Linux 5.4和5.5 Web,数据库服务器和邮件服务器的非营利组织,运行Java Web应用程序堆栈,软件负载平衡器和Postgres数据库。 所有系统都在不同位置的两个VMWare vSphere群集上虚拟化,每个群集都有HA,DRS等。 环境B: 拥有200个CentOS 5.x系统的高频金融交易公司,在多个同地点设施中进行生产交易操作,支持内部开发和后台function。 交易服务器在裸机商品服务器硬件上运行。 他们有许多sysctl.conf , rtctl ,中断绑定和驱动程序调整,以降低邮件延迟。 一些有定制和/或实时内核。 开发者工作站也运行类似的CentOS版本。 在这两种情况下,环境运行良好。 升级的愿望来自对EL6中新的应用程序或function的需求。 对于非盈利公司来说,它与Apache,内核以及一些能够让开发者感到高兴的东西联系在一起。 在交易公司,这是关于内核,networking堆栈和GLIBC的一些增强,这将使开发人员高兴。 如果不彻底改变操作系统 ,两者都不能轻易打包或更新。 作为系统工程师,我很欣赏红帽build议在主要版本之间移动时进行完整的重build。 一个干净的开始迫使你重构并注意一路上的configuration。 对于客户的业务需求敏感,我想知道为什么这需要这么艰巨的任务 。 RPM打包系统不仅能处理就地升级,而且还有一点点细节让你: /boot需要更多的空间,新的默认文件系统,RPM可能会打破升级中,不推荐使用和不使用的软件包。 这里的答案是什么? 其他发行版(基于.deb,Arch和Gentoo)似乎具有这种能力或更好的path。 比方说,我们find了以正确的方式完成这项任务的停机时间: 当EL7发布并稳定时,这些客户应该做些什么来避免相同的问题呢? 还是这样的情况是每隔几年人们需要辞职去重build? 这似乎已经变得更糟,因为企业Linux已经演变…或者我只是想象呢? 这是否阻止了任何人使用红帽和衍生操作系统? 我想有configurationpipe理的angular度,但是我所看到的大多数Puppet安装并不能很好地转化为具有高度自定义的应用程序服务器的环境 ( 环境B可能有一个服务器,其ifconfig输出如下所示 )。 不过,我很乐意听到关于如何使用configurationpipe理来帮助组织跨越RHEL主要版本的build议。

为什么使用Chef / Puppet而不是shell脚本?

傀儡和厨师工具新。 看起来像他们正在做的工作可以用shell脚本来完成。 也许这是在shell脚本中完成,直到这些脚本出现。 我会同意他们更可读。 但是,除了可读性外,还有别的优点吗?

select有意义和无意义的主机名

假定一个由不同服务器组成的木偶pipe理集群的环境 – 各种硬件,软件,操作系统,虚拟/专用等。 你会select有意义的主机名(mysqlmaster01..99,mysqlslave001..999,vpnprimary,vpnbackup等),还是更喜欢毫无意义的主机名称,例如书籍或电影中的字符? 我用有意义的主机名看到的问题是,名称通常代表单个服务,如果服务器具有多个目的,则会变得非常混乱(尤其是如果服务器angular色经常更改)。 是不是将一个服务名称映射到一个IP地址,并保持这个映射什么DNS应该做的? 这两种方法的优点和缺点是什么?您select的方法需要解决哪些实际问题?

小家伙如何有效地学习和使用Puppet?

六个月前,在我们的非盈利项目中,我们决定开始将我们的系统pipe理迁移到Puppet控制的环境中,因为我们期望从现在到一年之间,我们的服务器数量会大幅增长。 自从做出这个决定后,我们的IT人员变得有点太烦人了。 他们最大的反对意见是: “我们不是程序员,我们是系统pipe理员”; 模块可以在线获得,但是许多模块有所不同; 车轮经常被重新发明,你如何决定哪一个适合这个法案? 在我们的回购中的代码是不够透明的,要找出他们不得不通过它们可能甚至写了自己前面的清单和模块recursion的东西是如何工作的; 一个新的守护进程需要编写一个新的模块,惯例必须与其他模块相似,这是一个困难的过程; “让我们运行它,看看它是如何工作的” 在社区模块中几乎没有“扩展名”:“trocla”,“augeas”,“hiera”…我们的系统pipe理员如何跟踪? 我可以看到为什么一个大型组织将派遣他们的系统pipe理员到木偶课程成为木偶大师。 但是,如果小型玩家不上课程,基本上通过浏览器和编辑学习,那么小型玩家如何才能将木偶学到专业水平呢?