厨师厨房缺少食谱

时间:2017-01-01 06:54:40

标签: ruby-on-rails ruby chef chef-recipe

尝试使用厨师设置rails应用程序,但收到Missing Cookbooks错误。

重现步骤

$ 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

出现以下错误:

  

缺少食谱:          ------------------          没有这样的食谱:ruby-ng

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

为此,我在stackoverflow&上搜索现有的答案。我想如果我搬家的菜单,厨师就能找到它们

$ 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. 我能够修复错误,但我不明白“为什么”这个错误发生了。我认为这与chef_repo_path有关,但并不是真的理解它。那么如果可以解释或指向相关的文档?
  2. 我应该将食谱推销到./cookbooks而不是./cookbooks/chef_rails/berks-cookbooks/。如果是的话,我如何让berks vendor做到这一点?
  3. 开发后,上传到github。还应该在回购中包括销售的食谱吗?计划与Chef Server一起使用这些cookbook来设置rails的服务器。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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