Chef infra 如何使用手工书写的烹饪书时,在厨师?

Chef infra 如何使用手工书写的烹饪书时,在厨师?,chef-infra,vagrant,berkshelf,Chef Infra,Vagrant,Berkshelf,我用的是流浪汉+厨师。我的厨师食谱做得很好。然后我安装了vagrant berkshelf插件,从那一刻起我就不能使用自己的烹饪书了。Berkshelf覆盖了cookbooks目录,当我使用它们时,chef看不到我的cookbooks。我的配置如下: config.berkshelf.enabled = true config.vm.provision :chef_solo do |chef| chef.add_recipe "qbaka-frontend" end 使用此配置,che

我用的是流浪汉+厨师。我的厨师食谱做得很好。然后我安装了vagrant berkshelf插件,从那一刻起我就不能使用自己的烹饪书了。Berkshelf覆盖了cookbooks目录,当我使用它们时,chef看不到我的cookbooks。我的配置如下:

config.berkshelf.enabled = true

config.vm.provision :chef_solo do |chef|
   chef.add_recipe "qbaka-frontend"
end
使用此配置,chef只能使用
Berksfile
中指定的cookbooks,但无法在
cookbooks
目录中查看我的cookbooks


如何同时使用my&BerksShelf的烹饪书?

您必须在
Berksfile
中指定烹饪书的路径

cookbook“工件”,路径:“/Users/reset/code/artifact cookbook”

请参见此处:

vagrant berkshelf插件和berkshelf通常以烹饪书为中心。然而,厨师是以菜谱回购为中心的。安装
vagrant Berkshellf
插件鼓励您使用以食谱为中心的方法,将每本食谱视为自己的软件项目

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

  • 如果您只需要一本或两本烹饪书,只需使用以下工具添加它们:

  • 如果你想要所有的食谱,你可以在这里利用Ruby。一个鲜为人知的秘密是,
    Berksfile
    以Ruby的形式执行,因此您可以循环并使用它:

    Dir['/Users/sethvargo/cookbooks/**'].each do |path|
      cookbook File.basename(path), path: path
    end
    
    这将把该目录中的每本食谱加载到您的Berksfile(从而加载到BerksShelf)

  • 资料来源:

    • 我是Berkshelf项目的核心提交人
    • 我在这个职位上为厨师工作:)

    感谢您的回答和此工具:)。但为什么会这样呢?我希望这类工具完全透明,就像Maven中所做的那样。@Danil我不完全确定你在问什么。为什么伯克书架烹饪书是中心的?这不是更好吗?另外,我使用方括号
    Dir.glob('custom_cookbooks/**')得到了一个glob错误。每个do | path | cookbook File.basename(path),path:path end
    来自berkshellf.com:“Chef Solo provisioner的cookbook_路径属性在使用Vagrant Berkshelf插件时被劫持。从您的Berksfile解析的食谱将自动提供给您的流浪虚拟机。”
    Dir['/Users/sethvargo/cookbooks/**'].each do |path|
      cookbook File.basename(path), path: path
    end