2011-06-19 129 views
17

我想问一下你什么时候和什么情况下使用木偶,以及什么时候使用厨师。我还发现rump这是一种傀儡独奏类型的事物,您可以将单台服务器迭代到其配置中,然后将其推送到一系列服务器,以便您直接查看更改。厨师和木偶推荐

我的问题:这上面我应该用在哪些方面?有人能帮助我吗?

我的目标是在持续集成,持续部署的单声道/ .NET环境耙和Git的上下文。我想轻松打包,版本和部署Web应用程序,并希望将recepies用于多个Web服务器的负载平衡器。能够快速降低这些数据,并且在升级之间不会出现任何停机。

回答

15

我会使用Puppet,但我有点偏见,因为我写了一本关于它的书,并在那里工作。 :)除了Rump,您还可以在其应用模式下使用Puppet - 这与厨师独奏相同。虽然Rump包装了一些值得尝试的过程。

我给木偶这里拍摄使用臀部周围的包裹物 - 你既可以用木偶DSL或Ruby DSL(厨师只有一个Ruby DSL)。使用Puppet创建“环境”并将git/CI工作流程与您的部署集成非常容易。它也很容易与Rake任务或诸如此类集成。

+0

太棒了。我几天前买了你的书。我应该在哪里寻找关于如何将我的代码设置为傀儡可以与例如傀儡一起处理的包的指导。 Web服务器还是作为独立服务(例如使用TopShelf)? – Henrik

+0

这本书写的就像我坐在一个企业的基础设施,DNS服务器等已经成立......我如何从头开始在WIN/Ubuntu的?假设我想配置一个Win2008服务器并拥有一个git存储库? – Henrik

5

如果你对Ruby很熟悉,我建议你尝试一下Chef比Puppet。使用红宝石大厨&,您可以运行非常复杂的任务。然而,傀儡比厨师更清晰。好还是不好,都取决于你的实际工作。

+0

你是什么意思?为什么傀儡更多的域被定义? – Henrik

+0

我的意思是傀儡比较严格的格式定义了比厨师更干净的模型。这一点可以使资源(厨师电话资源作为食谱)容易被读/写。 – Huan

+0

我同意。厨师食谱可能会更复杂,然后木偶清单) – merqlove

27

既然使用了两者,我会说它取决于你所寻找的。在我看来:

  • 厨师开发商取向。如果你是一位Ruby大师,你会爱上它。

  • Puppet is more sysadmin-oriented。它有一个非ru​​by的DSL,所以将错误传播到你的机器(imho)更加困难。

木偶创建更具可读性和稳定的代码,但它也慢部署新功能。这可能是您在一个坚信您的DevOps工作的大企业架构中需要的。

随着厨师可以实现复杂的任务,用更少的代码,时间精力。你可以使用所有的红宝石魔法,而无需创建一个Puppet构造。例如,当您的公司并不真正相信DevOps的价值,并且您不断努力争取时间来证明您的经理错误时,这很好:-)我个人发现Puppet在开发新功能时执行起来要慢一些可能会有点痛苦。

我的建议是:如果你有一定的开发技能的系统管理员,去木偶。如果你对Ruby(或Python)很好,那就去厨师吧。

我也试过臀部,我用它玩。它有帮助,它很酷,但我仍然没有看到一个巨大的价值,除了懒惰打字臀部去而不是puppet apply -vd --modulepath =。 module/manifests/init.pp。 :)

+1

我发现puppet apply + capistrano最适合本地设置或在您是单个部署者的项目中。否则,安全性告诉我们使用puppet master或Hosted Chef或Chef Solo或其他人:)用Ruby编写的很多puppet模块,我也喜欢语法,它很容易配置,Chef更加困难。但有时厨师可以对任何使用木偶的服务器做任何事情:) – merqlove

+0

由于某种原因,我通过将'-e'开关加入我的班级,我有更好的运气。 'sudo puppet apply --modulepath〜/ git/puppet_modules -e'include my-class'' – MarkHu

9

最后,我结束了木偶+ vagrant这让我运行/重新运行/测试木偶表现:然后

gem install puppet 
gem install vagrant 

首先安装VirtualBox,然后

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 

现在你已经有了一个傀儡管理虚拟机,你可以玩,任何清单你改变进入源代码管理。你可以快速迭代而不必诉诸于臀部。

5

Puppet和Chef之间还有一个很大的区别就是Puppet会在服务器上完成所有的清单编译,而Chef(和cfengine)会在客户端上完成部分或全部工作。

这是什么意思是 *您的客户端上运行木偶的CPU占用空间较少, *插件使用Puppet编写的模块只能在服务器上运行。

第二部分很重要,因为它使Puppet与其他架构相结合变得更容易。例如,如果您想通过另一个应用程序的API来获取数据,那么在Puppet下,您只需要在Puppetmaster上安装必要的API模块,并且只需要授予该服务器对API的访问权限即可。任何必要的证件也都留在傀儡大师身上 - 更加安全。

我们整合了Puppet和SecretServer(使用puppet自动旋转根密码并将它们存储到SecretServer中)。根据我的理解模型,这在厨师之下是不可能的或安全的。