14

我正在使用流浪者+厨师。我的厨师食谱效果很好。然后我安装了 vagrant-berkshelf 插件,从那一刻起我就不能使用自己的食谱了。Berkshelf 会覆盖食谱目录,当我使用它们时,厨师看不到我的食谱。我的配置是这样的:

config.berkshelf.enabled = true

config.vm.provision :chef_solo do |chef|
   chef.add_recipe "qbaka-frontend"
end

使用此配置,厨师仅适用于指定的食谱,Berksfile但无法在cookbooks目录中看到我的食谱。

如何同时使用我的 & Berkshelf 的食谱?

4

2 回答 2

45

vagrant-berkshelf插件和 Berkshelf 通常以食谱为中心。然而,Chef 是以食谱回购为中心的。安装vagrant-berkshelf插件鼓励您使用以说明书为中心的方法,将每本说明书视为自己的软件项目。

您需要将cookbooks目录中的每个说明书添加到您的 Berksfile。这里有两种方法:

  1. 如果您只需要一两本食谱,只需使用Berkshelf 路径位置添加它们:

    cookbook 'bacon', path: '~/cookbooks/bacon'
    
  2. 如果你想要所有的食谱,你可以在这里使用 Ruby。一个鲜为人知的秘密是,它Berksfile是作为 Ruby 执行的,因此您可以循环并变得神奇:

    Dir['/Users/sethvargo/cookbooks/**'].each do |path|
      cookbook File.basename(path), path: path
    end
    

    这会将那个目录中的每本食谱加载到您的 Berksfile(以及 Berkshelf)中

资料来源:

  • 我是 Berkshelf 项目的核心提交者
  • 我在这篇文章的时候为厨师工作:)
于 2013-11-28T18:25:38.870 回答
3

您必须在Berksfile.

 cookbook "artifact", path: "/Users/reset/code/artifact-cookbook"

见这里:http ://berkshelf.com/#path_location

于 2013-11-28T15:58:05.560 回答