厨师和Puppet的建议

Hen*_*rik 18 .net rake puppet chef-infra

我想询问你何时以及在什么情况下使用木偶以及何时使用厨师.我还发现了rump这是一种木偶独奏类型的东西,你可以将单个服务器迭代到它的配置,然后将其推送到一系列服务器,让你直接看到变化.

我的问题:我应该使用以上哪种方式以及以何种方式使用?有人能帮助我吗?

我的目标是持续集成,在单/ .Net环境中使用rake和git进行持续部署.我想轻松地打包,版本和部署Web应用程序,并希望将Recepies用于多个Web服务器的负载均衡器.能够快速降低这些并且在升级之间没有任何停机时间.

Ric*_*rdo 27

使用过两者之后,我会说这取决于你所寻找的东西.在我看来:

  • Chef更注重开发人员.如果你是一个Ruby大师,你会喜欢它.

  • Puppet更加面向系统管理员.它有一个非ru​​by DSL,因此将错误传播到你的机器(imho)更加困难.

Puppet创建了更具可读性和稳定性的代码,但部署新功能的速度也很慢.这可能是您在一个强烈相信您的DevOps工作的大型企业结构中所需要的.

使用Chef,您可以用更少的代码和更少的时间来完成复杂的任务.您可以使用所有ruby魔法,而无需创建Puppet构造.这很好,例如,当你的公司不真正相信DevOps价值并且你经常在时间上努力证明你的经理是错的:-)我个人发现Puppet在开发新功能时执行起来有点慢,可能有点痛苦.

我的建议是:如果你是具有一些开发技能的系统管理员,请选择Puppet.如果你对Ruby(或Python)很好,那就选择Chef.

我也试过臀部,我正在玩它.它很有帮助,很酷,但我仍然没有看到一个巨大的价值,除了懒惰的输入rump而不是puppet apply -vd --modulepath =.模块/舱单/ init.pp.:)


小智 15

我会使用Puppet,但是当我写一本关于它的书并在那里工作时,我有点偏颇.:)除了Rump之外,您还可以在其应用模式中使用Puppet - 这与chef-solo相同.虽然Rump在这个值得尝试的过程中包含了一些好处.

我使用Rump作为回合给Puppet一个镜头 - 你可以使用Puppet DSL或Ruby DSL(Chef只有一个Ruby DSL).使用Puppet创建"环境"并将git/CI工作流与您的部署集成非常容易.它也很容易与Rake任务等集成.


Hen*_*rik 10

最后,我最终得到了puppet + vagrant,它允许我运行/重新运行/测试木偶清单:

首先安装VirtualBox,然后:

gem install puppet
gem install vagrant
Run Code Online (Sandbox Code Playgroud)

然后:

vagrant box add base http://files.vagrantup.com/lucid32.box
vagrant init
Run Code Online (Sandbox Code Playgroud)

然后编辑./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
Run Code Online (Sandbox Code Playgroud)

然后添加一个节点定义manifests/default.pp,如:

group { "puppet":
  ensure => "present",
}
file { '/etc/motd':
    content => "Welcome to your Vagrant-built virtual machine!\n"
}
Run Code Online (Sandbox Code Playgroud)

然后运行:

vagrant up
Run Code Online (Sandbox Code Playgroud)

现在您已经拥有了一个可以玩的木偶管理虚拟机,并且您更改的任何清单都会进入源代码管理.你可以快速迭代而不必诉诸臀部.


Hua*_*uan 5

如果你熟悉Ruby,我建议你尝试Chef而不是Puppet.使用chef&ruby,你可以运行非常复杂的任务.然而,木偶比厨师更清洁领域.好与否,完全取决于您的实际工作.


Ste*_*way 5

Puppet和Chef之间没有提到的另一个重要区别是Puppet将在服务器上执行所有清单编译,而Chef(和cfengine)将在客户端上完成部分或全部工作.

这意味着*通过运行puppet减少客户端上的CPU占用空间,并且只在服务器上运行用Puppet编写的加载项模块.

第二部分很重要,因为它使Puppet与您的其他架构更加容易.例如,如果您想通过API从另一个应用程序提取数据,则在Puppet下只需要在Puppetmaster上安装必要的API模块,并且只需要授予该服务器访问API的权限.任何必要的证书也留在木偶大师身上 - 更加安全.

我们集成了Puppet和SecretServer(使用puppet自动旋转root密码并将它们存储到SecretServer中).正如我理解模型一样,这在Chef下是不可能或不安全的.