选择流浪汉配置者

And*_*ker 28 bash puppet configuration-management chef-infra vagrant

任何人都可以解释为什么选择木偶或厨师流浪汉供应者而不是壳供应商会更好吗?

背景

我正在开始使用Vagrant.我遇到问题的一个原因是决定使用哪个配置器.到目前为止,我已经使用shell配置程序取得了一些成功,但是它比我预期的更可靠地运行它.

目前,我不熟悉红宝石,木偶或厨师,但如果必须,我很乐意学习其中的任何一个或全部.我与木偶和厨师一起玩的早期经验是,如果其他人的配方完全符合您的要求,那么它的效果非常好,但做一些非标准的工作意味着在红宝石中编写解决方案.

我知道有关比较傀儡和厨师的文章,我不太担心他们使用哪一个,而不是知道何时以及为什么我应该使用它们.

esh*_*mow 27

完全披露:我是Puppet Labs员工.但在加入之前,我选择了Puppet作为产品超过2年.

我建议你使用Puppet或Chef over shell如果你的配置要a)有任何程度的复杂性和b)随着时间的推移而改变 - 或者你希望你的安装环境本身改变的方式可能改变方式您的部署执行.你的脚本可能非常好,但最终,除非你正在遵循他们周围的极好的编程实践,测试和QA他们等等,他们将在某些时候失败.

DevOps围绕着这个概念有一大堆文字,但它归结为"技术债务"的原则 - 我们现在倾向于以简单的方式做事,因此认为它们更简单,代价是增加复杂性和难度后来.

Puppet的优势之一是其确定性 - 您编写的清单必须能够通过Puppet以编程方式转换为您正在构建的服务器的模型.这被人们认为更"困难",但我认为如果你沿着技术生命周期的曲线平均化,那么难度就会降低.换句话说,Puppet迫使你现在进行思考,然后轻松地进行部署,而不是在以后思考并重新设计.以后用现金支付现金,而不是信贷.

如果你纯粹是在贬低其他民族的表现,你会在某些时候遇到麻烦 - 虽然我们希望它不会如此,但今天与Puppet合作肯定是这样的,因为他们正在写它们来解决一般情况,而不是您的特定系统.只有当您更好地理解Puppet时,许多通用清单才会变得有用.

因此,我不是从那里开始,而是通过优秀的学习木偶指南来开始掌握基础知识.Puppet的学习曲线很陡峭,但是在一段时间之后就会趋于平稳.

使用其他配置程序或工具还有其他原因,但我肯定会说你对Puppet或Chef更好,而不是试图确保你的shell脚本完全按照你认为他们应该做的那样,只要你需要产生新的环境.

  • +1"伟大的"*现在支付现金,而不是信贷,有利息,以后.*"技术债务寓言. (6认同)
  • 我认为shell配置程序非常好*,前提是你将它们视为原型,并在兴趣到期之前用Chef或Puppet替换它们.使用shell脚本更容易获得一些东西,如果你仍在确定*你需要什么,那么这个原型阶段将真正有用.问题是,如果您的管理层认为您在shell脚本工作时已完成,并且不允许您替换它们.那么你将会积累很多兴趣,当你被允许支付现金时,你可能会破坏银行. (3认同)
  • 两者都有框架和安全带.您可以查看[rspec-puppet](https://github.com/rodjek/rspec-puppet)或[cucumber-puppet](https://github.com/nistude/cucumber-puppet)获取一些有用的TDD/BDD Puppet工具.shell也有测试工具,但是shell的问题在于你必须处理所有自己的故障情况 - 你怎么知道你已经成功了,你怎么知道你的代码正在做你声称的那样呢?Puppet包含许多用于处理这些内容的框架,因此使故障排除/验证代码变得更简单. (2认同)

Noa*_*oah 10

啊,选择的自由带来了选择适合自己的东西的复杂性.

厨师Solo - 厨师独奏是最理想的,如果你刚刚开始使用厨师或厨师服务器对你的情况来说太沉重了.Chef solo允许您将所有烹饪书嵌入到项目中,这对于想要在同一个存储库中跟踪其烹饪书的项目非常有用.Chef solo独立运行 - 它不需要厨师服务器或任何其他服务器进行通信; 它只是在VM上自行运行.

Chef Server - Chef服务器对管理许多项目的公司或个人非常有用,因为它允许您跨多个项目共享cookbook.烹饪书本身存储在服务器上,客户端在运行时下载烹饪书.

Puppet - Puppet配置程序运行独立的Puppet清单,这些清单存储在服务器上并在创建时下载到客户端VM.供应者不需要Puppet服务器并在VM本身上运行.

Puppet Server - Puppet Server配置程序连接到Puppet服务器,并使用该服务器上的节点配置配置客户端VM.

其他工具,shell脚本等 - 你是否使用了Vagrant内置的东西?Provisioners只是Vagrant :: Provisioners :: Base的子类,这意味着如果需要,您可以轻松构建自己的子类.

您还可以查看文档docs.vagrantup.com/v2