我的项目是使用我们公司的食谱,与第三方食谱分开的目录。
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?相关。
答案 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