我想询问您何时以及在什么情况下使用木偶以及何时使用厨师。我还发现rump这是一种木偶独奏类型的东西,你将一台服务器迭代到它的配置,然后将它推送到一系列服务器,让你直接看到变化。
我的问题:我应该使用以上哪种方式以及以何种方式使用?有人能帮助我吗?
我的目标是持续集成,在带有rake和git的单/ .Net环境中持续部署。我想轻松地打包,版本和部署Web应用程序,并希望将Recepies用于多个Web服务器的负载均衡器。能够快速降低这些并且在升级之间没有任何停机时间。
答案 0 :(得分:27)
使用过两者后,我会说这取决于你要找的东西。在我看来:
主厨更多是以开发人员为导向的。如果你是一个Ruby大师,你会喜欢它。
Puppet 更多是以 sysadmin 为导向的。它有一个非ruby DSL,因此将错误传播到你的机器上会更加困难(imho)。
Puppet 创建了更具可读性和稳定性的代码,但部署新功能的速度也很慢。这可能是你在一个强烈相信你的DevOps工作的大型企业结构中你想要的。
使用 Chef ,您可以用更少的代码和更少的时间来完成复杂的任务。您可以使用所有ruby魔法,而无需创建Puppet构造。这很好,例如,当你的公司不真正相信DevOps价值并且你经常在时间上努力证明你的经理是错的:-)我个人发现Puppet在开发新功能时执行起来有点慢,可能有点痛苦。
我的建议是:如果你是具有一些开发技能的系统管理员,请选择Puppet。如果你对Ruby(或Python)很好,那就选择Chef。
我也试过臀部,我正在玩它。这很有帮助,但很酷,但除了 rump go 的懒惰输入而不是 puppet apply -vd --modulepath =之外,我仍然看不到很大的价值。模块/表现/ init.pp 。 :)
答案 1 :(得分:15)
我会使用Puppet,但是当我写一本关于它的书并在那里工作时,我有点偏颇。 :)除了Rump之外,您还可以在其应用模式中使用Puppet - 这与chef-solo相同。虽然Rump在这个值得尝试的过程中包含了一些好处。
我会使用Rump作为回合给Puppet一个镜头 - 你可以使用Puppet DSL或Ruby DSL(Chef只有Ruby DSL)。使用Puppet创建“环境”并将git / CI工作流与您的部署集成非常容易。它也很容易与Rake任务等集成。
答案 2 :(得分:10)
最后我得到了木偶+ vagrant,这让我可以运行/重新运行/测试木偶清单:
首先安装VirtualBox,然后:
gem install puppet
gem install vagrant
然后:
vagrant box add base http://files.vagrantup.com/lucid32.box
vagrant init
然后编辑./Vagrantfile说:
Vagrant::Config.run do |config|
config.vm.box = "base"
config.vm.provision :puppet do |puppet|
puppet.manifests_path = "manifests"
puppet.module_path = "modules"
end
# rest here
end
然后将节点定义添加到manifests/default.pp
,如:
group { "puppet":
ensure => "present",
}
file { '/etc/motd':
content => "Welcome to your Vagrant-built virtual machine!\n"
}
然后运行:
vagrant up
现在您已经拥有了可以玩的木偶管理虚拟机,并且您更改的任何清单都会进入源代码管理。而且你可以快速迭代而不必诉诸臀部。
答案 3 :(得分:5)
如果您熟悉Ruby,我建议您尝试Chef而不是Puppet。使用chef& ruby,你可以运行非常复杂的任务。然而,木偶比厨师更清洁领域。好与否,完全取决于你的实际工作。
答案 4 :(得分:5)
Puppet和Chef之间没有提到的另一个重大区别是Puppet将在服务器上执行所有清单编译,而Chef(和cfengine)将在客户端上完成部分或全部工作。
这意味着什么 *通过运行puppet减少客户端上的CPU占用空间 *用Puppet编写的加载项模块仅在服务器上运行。
第二部分很重要,因为它使Puppet与您的其他架构更加容易。例如,如果您想通过API从另一个应用程序提取数据,则在Puppet下只需要在Puppetmaster上安装必要的API模块,并且只需要授予该服务器访问API的权限。任何必要的证书也留在木偶大师身上 - 更加安全。
我们集成了Puppet和SecretServer(使用puppet自动旋转root密码并将它们存储到SecretServer中)。正如我理解模型一样,这在Chef下是不可能或不安全的。