Chef Server:设置开发环境的策略

时间:2014-12-08 23:45:44

标签: vagrant chef berkshelf

我开始对Berkshelf感到满意了(顺便说一句,这是学习厨师的好方法)现在我想知道我应该如何管理/推广我想要提供本地化的PHP开发人员的开发环境/ Chef环境,由Chef cookbook提供。

我想弄清楚理想环境对于Chef开发人员和应用程序开发人员(在我的情况下是PHP开发人员)是什么。对于使用我的Cookbook的PHP开发人员,我需要可重复的本地(或VM)环境。

我正在考虑使用Vagrantfile,以便开发人员可以使用他或她的证书配置厨师服务器,配置它,并开始使用环境。我不确定的是:每个开发人员是否应在Chef Server中为每个应用程序列出他或她自己的Vagrant节点?或者有没有办法使用Chef客户端配置程序而无需注册vagrant节点?

基本上,我并不关心本地计算机上的节点,但如果开发人员可以从Chef服务器配置Vagrant以使其与其他环境匹配,那将是非常棒的。

其次,我所有的Berkshelf生成的回购都使用Chef Client进行配置。这是一个好的做法,还是我应该仅仅使用chef-solo来开发/测试作为开发者的烹饪书?

1 个答案:

答案 0 :(得分:3)

完全是一个意见类型问题,所以我会给出基于意见的答案。希望其他一些人能够参与进来,因为他们中的许多人比我有更多的经验。

对于App Developers

我们使用测试厨房和超市的组合,效果很好。我们有一个包含Gemfile,.kitchen.yml和Berksfile的repo。理想情况下,它还有一个命令设置脚本,可以设置超市用户,knife.rb,安装Vagrant等。这个repo还包含chef-local(角色,环境等)使用的所有原语。

最终,它将有一个Rakefile,可以很好地包装所有这些。

rake setup # installs any non-gem stuff, sets up users, berks install, etc.
rake standup # stands up our primary app and dependencies (involves multiple VMs playing together)
rake standup:standalone # stands up the primary app and dependencies all on one box
rake standup:otherApp # you get the idea

然后,每个rake任务可以根据需要调用尽可能多的kitchen converge个操作。

对于Chef Developers

首先,当大厨零(又称本地模式)变得越来越受欢迎时,厨师独奏正在失宠。 Solo永远不会消失,但我在你的用例中没有找到理由。

其次,我见过的大多数厨师似乎已经从Vagrantfile搬到了测试厨房。默认情况下,Kitchen使用Vagrant,而Vagrant也可以使用各种其他系统(Docker,AWS,Rackspace,VMware等)。它只是以厨师为中心。对于你所描述的你的开发环境而言,它会非常有效。无论如何都需要一个测试框架。那么为什么要使用Vagrant的测试框架,当你可以使用测试厨房并一石二鸟时。

第三,厨师零是你的朋友。不要让每个开发人员使用chef-server启动虚拟机。只需拥有一个包含环境,角色和data_bag的git仓库。然后让他们使用厨师零配置器运行Test-Kitchen,或者使用指向git repo的chef-local(运行chef-zero)运行。它通过这种方式重量轻得多,并允许所有开发人员共享共同的对象。

第四,结帐ChefDK。它几乎完全融入了上述所有内容,很可能成为正常的#34;做事的方式。

第五,如果您还是从头开始盯着我,我建议您在生产厨师服务器旁边设置超市和厨师卫士。 Chef-guard将对角色,环境和数据包进行管理更改,1000%更易于处理。超市与Berkshelf很好地集成,让您可以完全控制您环境中使用的烹饪书版本。