尝试使用厨师设置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
问题
chef_repo_path
有关,但并不是真的理解它。那么如果可以解释或指向相关的文档?./cookbooks
而不是./cookbooks/chef_rails/berks-cookbooks/
。如果是的话,我如何让berks vendor
做到这一点?答案 0 :(得分:1)
所以有几个问题:首先,因为@StephenKing说你需要让.kitchen.yml
在Berksfile
旁边,然后你还需要从该文件夹运行kitchen
命令。其次,您不需要(或想要)使用berks vendor
,因为Test Kitchen有自己的Berkshelf支持,当您在正确的位置拥有Berksfile时会自动激活。
答案 1 :(得分:0)
.kitchen.yml
文件应放在cookbook目录中。