如何在没有Berkshelf的chef_zero provisioner中使用.kitchen.yml指定cookbook_path

时间:2015-10-21 23:16:20

标签: chef cookbook test-kitchen chef-zero

我的项目是使用我们公司的食谱,与第三方食谱分开的目录。

cookbooks
|
|- CompanyCookbooks
|   |
|   |-MyCookbook
|
|- 3rdPartyCookbooks
|   |
|   |-ark

在“MyCookbook”目录下工作时,我正试图在我的食谱上运行厨房。 MyCookbook中的默认配方取决于ark,它位于3rdPartyCookbooks目录下的一组单独的cookbook中。但是我收到以下错误。

Missing Cookbooks:
------------------
No such cookbook: ark

我试图将“3rdPartyCookbooks”的路径添加到我的knife.rb中,但这不起作用。

cookbook_path ['../../CompanyCookbooks', '../../3rdPartyCookbooks']

我尝试将cookbook_path的各种排列添加到我的.kitchen.yml文件的配置文件部分,但这也没有用。

provisioner:
  name: chef_zero
  data_bags_path: ../../../databags
  roles_path: ../../../roles
  solo_rb:
    cookbook_path:
      - ../../3rdPartyCookbooks
      - ../../CompanyCookbooks

provisioner:
  name: chef_zero
  data_bags_path: ../../../databags
  roles_path: ../../../roles
  cookbooks_path: '../../CompanyCookbooks, ../../3rdPartyCookbooks'

How to specify cookbook path in .kitchen.yml file for chef_solo provisioner?相关。

2 个答案:

答案 0 :(得分:1)

正如您之前所说,需要使用Berkshelf。像这样添加 Berksfile 解决了依赖:

source "https://supermarket.chef.io"
metadata
cookbook "aws", path: "../aws"

答案 1 :(得分:0)

KitchenCI可以通过像Berkshelf或Librarian Chef这样的依赖管理器获取远程机器中的cookbook依赖项。当不使用依赖管理器时,它会查找相对于厨房执行的./cookbooks/和./site-cookbooks/并将其同步到远程机器(据我所知,这是不可配置的)。

cookbook_path是knife.rb的一个属性,而不是KitchenCI