2017-01-01 158 views
0

试图设置一个使用厨师的应用程序的应用程序,但缺少Cookbook错误。厨师厨房缺少食谱

步骤来重现

$ chef generate app chef_rails #create new app that will hold cookbooks for rails. 
$ echo "cookbook 'ruby-ng'" >> cookbooks/chef_rails/Berksfile 
$ cd cookbooks/chef_rails/ 
$ berks install 
$ berks vendor 
$ cd ../../ 
$ vim .kitchen.yml #add `recipe[ruby-ng::default]` to runlist 
$ kitchen converge 

其中提供了以下错误:

Missing Cookbooks: ------------------ No such cookbook: ruby-ng

Expanded Run List: 
    ------------------ 
    * chef_rails::default 
    * ruby-ng::default 

对于这一点,我搜索的计算器&现有的答案,认为如果我移动vendored食谱,厨师是能够找到他们

$ mv cookbooks/chef_rails/berks-cookbooks/* cookbooks 
$ ls cookbooks                       
apt    chef_rails  mingw   ruby-ng   windows 
build-essential compat_resource ohai   seven_zip 
$ kitchen converge #works flawlessly 
$ kitchen list                      
Instance    Driver Provisioner Verifier Transport Last Action Last Error 
default-ubuntu-1404 Vagrant ChefZero  Inspec Ssh  Converged <None> 

这里有版本,我使用:

$ chef --version                      
Chef Development Kit Version: 1.1.16 
chef-client version: 12.17.44 
delivery version: master (83358fb62c0f711c70ad5a81030a6cae4017f103) 
berks version: 5.2.0 
kitchen version: 1.14.2 

问题

  1. 我能修正这个错误,但我不明白“为什么”这个错误occurred.I认为这与chef_repo_path有关,但并不真正了解它。所以如果能解释或指出相关文档?
  2. 我应该将烹饪书销售到./cookbooks而不是./cookbooks/chef_rails/berks-cookbooks/。如果是的话,我该如何让berks vendor做到这一点?
  3. 开发后,用于上传到github。还应该在回购中包含售卖的食谱?计划与Chef Server一起使用这些食谱来为Rails设置服务器。

回答

1

所以有几个问题:首先,因为@StephenKing表示您需要将.kitchen.yml放在Berksfile的旁边,然后您还需要从该文件夹运行kitchen命令。其次,您不需要(或不想)使用berks vendor,因为Test Kitchen具有自己的Berkshelf支持,当您在正确的位置有Berksfile时,它会自动激活。

0

.kitchen.yml文件应该放在cookbook目录中。