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

Dan*_*iil 14 chef-infra vagrant berkshelf

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

config.berkshelf.enabled = true

config.vm.provision :chef_solo do |chef|
   chef.add_recipe "qbaka-frontend"
end
Run Code Online (Sandbox Code Playgroud)

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

我如何与我的&Berkshelf的烹饪书同时工作?

set*_*rgo 44

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

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

  1. 如果您只需要一个或两个cookbook,只需使用Berkshelf路径位置添加它们:

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

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

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

资料来源:

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