在厨师使用berkshelf时如何使用手写食谱?

时间:2013-11-28 15:18:47

标签: chef vagrant berkshelf

我正在使用流浪汉+厨师。我的厨师食谱非常完美。然后我安装了vagrant-berkshelf插件,从那一刻起我无法使用自己的烹饪书。 Berkshelf覆盖了cookbook目录,当我使用它时,厨师看不到我的食谱。我的配置是这样的:

config.berkshelf.enabled = true

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

使用此配置,Chef只能使用Berksfile中指定的食谱,但无法在cookbooks目录中查看我的食谱。

我如何与我的同时工作? Berkshelf的食谱?

2 个答案:

答案 0 :(得分:43)

vagrant-berkshelf插件和Berkshelf一般都是以食谱为中心的。然而,厨师以食谱 - 回购为中心。安装vagrant-berkshelf插件鼓励您使用以烹饪书为中心的方法,将每个食谱视为自己的软件项目。

您需要将cookbooks目录中的每个cookbook添加到Berksfile中。这里有几种方法:

  1. 如果您只需要一两本烹饪书,只需使用Berkshelf path location添加它们:

    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)

  3. 来源:

    • 我是Berkshelf项目的核心提交者
    • 我在这篇文章发表时曾为Chef工作过:)

答案 1 :(得分:3)

您必须在Berksfile中指定食谱的路径。

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

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