Chef infra 如何与Vagrant一起使用新的opscode回购协议?

Chef infra 如何与Vagrant一起使用新的opscode回购协议?,chef-infra,vagrant,Chef Infra,Vagrant,我在一段时间前使用了Vagrant,能够使用以下功能: config.vm.provision :chef_solo do |chef| chef.recipe_url = 'https://github.com/opscode/cookbooks/tarball/master' chef.add_recipe 'nginx' chef.add_recipe 'mysql' chef.add_role 'web' # You may also specify custom JSON attri

我在一段时间前使用了Vagrant,能够使用以下功能:

config.vm.provision :chef_solo do |chef|
chef.recipe_url = 'https://github.com/opscode/cookbooks/tarball/master'
chef.add_recipe 'nginx'
chef.add_recipe 'mysql'
chef.add_role 'web'

# You may also specify custom JSON attributes:
# chef.json = { :mysql_password => '' }
end

现在看来这是不赞成的。我该如何使用新的回购协议呢?

首先,我的建议是不要直接使用Git上master branch的任何人的食谱。如果cookbook存储库的各个作者/维护者(个人或整体)对每个“版本”都有Git标记,请使用该标记。否则,请使用您知道适用于基础架构的特定提交。虽然GitHub是一个共享代码的有用站点,但重要的是要记住这些是开发存储库。相比之下,大多数人不会将库核心的主分支用于他们的应用程序,他们会使用该库的发布版本(无论是gem、cpan模块、包等等)

其次,Opscode的食谱已经发布了经过测试的版本,以确保它们按照自述文件所说的做。这些版本将发布到。虽然他们已经发布了,但我们建议使用该站点的版本

要将烹饪书从站点传送到本地系统,有多种工具支持本地开发工作流。在内部,Opscode正在使用,社区中的许多人也是如此。它是一个相当完整的工作流管理工具,包括类似于的依赖项解析器。BerksShelf还集成了Vagrant,这意味着“berksfile”中的所有烹饪书都会被复制到Vagrant机器中,以便在厨师运行中使用

chef repo顶层的Berksfile示例如下所示:

site :opscode
cookbook "nginx"
cookbook "mysql"
cookbook "my_application", :git => "https://git.example.com/cookbooks/my_application.git"
然后使用
berks install
下载食谱。Berkself也将使用烹饪书中的元数据来解决它们的依赖关系。这将使用社区站点API下载nginx和mysql食谱,然后从内部Git存储库检索“my_应用程序”食谱。然后,要在vagrant中使用berkshelf,请将其放在vagrant文件的顶部

require 'berkshelf/vagrant'
然后当你“流浪起来”时,如果你使用的是Chef Solo,berkshelf会将所有的烹饪书复制到流浪机器中。如果您使用的是Chef Client/Server,那么您可以使用
berks upload
将所有烹饪书上载到服务器,vagrant中的客户端供应器将从服务器下载

Jamie Winsor是Riot Games Berkshell的主要开发者之一,他写了一篇文章

Berkshelf的另一个替代工具是。它纯粹是一个依赖关系管理工具,而不是一个工作流工具。它“接管”你的
食谱
目录,管理那里的所有内容,你定制的食谱进入
站点食谱
。然后将Vagrant与solo provisioner一起正常使用,或将客户端/服务器与
刀烹饪书上传一起使用

最后,
knife
随厨师客户端一起提供,RubyGem有一个插件,
cookbook站点安装
。虽然这是由Opscode作为Chef gem的一部分支持和维护的,但许多人正在将他们的工作流程转换为使用Berkschelf或Library。这个


如果您还有其他问题,or是提问和讨论工作流的好地方。

在配置
Berksfile
Vagranfile
后,应运行
vagrant up--provision
通过
BerksShelf
安装必要的烹饪书?或者在提供之前是否需要安装烹饪书?如果您已经安装了vagrant berkshelf,并且正确配置了vagrant文件(如果您使用berks init,则会正确配置),那么您可以运行“vagrant up”