厨师厨房缺少食谱
Missing Cookbooks with chef kitchen
正在尝试使用 Chef 设置 rails 应用程序,但出现缺少食谱错误。
重现步骤
$ 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
为此,我在 Whosebug 上搜索了现有的答案,并认为如果我移动出售的食谱,厨师就能找到它们
$ 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
问题
- 我可以修复错误,但我不明白 "why" 这个错误 occurred.I 认为这与
chef_repo_path
有关,但并不真正理解。那么是否可以解释或指向相关文档?
- 我应该将食谱卖给
./cookbooks
而不是 ./cookbooks/chef_rails/berks-cookbooks/
。如果是,那么我如何让 berks vendor
做到这一点?
- 开发完成后,待上传至github。还应该在 repo 中包括出售的食谱吗?计划将这些食谱与 Chef Server 一起使用来为 rails 设置服务器。
.kitchen.yml
文件应该放在 cookbook 目录中。
所以有几个问题:首先正如@StephenKing 所说,您需要 .kitchen.yml
紧挨着 Berksfile
然后您还需要 运行 kitchen
来自该文件夹的命令。其次,您不需要(或不想)使用 berks vendor
,因为 Test Kitchen 有自己的 Berkshelf 支持,当您在正确的位置有 Berksfile 时,它会自动激活。
正在尝试使用 Chef 设置 rails 应用程序,但出现缺少食谱错误。
重现步骤
$ 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
为此,我在 Whosebug 上搜索了现有的答案,并认为如果我移动出售的食谱,厨师就能找到它们
$ 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
问题
- 我可以修复错误,但我不明白 "why" 这个错误 occurred.I 认为这与
chef_repo_path
有关,但并不真正理解。那么是否可以解释或指向相关文档? - 我应该将食谱卖给
./cookbooks
而不是./cookbooks/chef_rails/berks-cookbooks/
。如果是,那么我如何让berks vendor
做到这一点? - 开发完成后,待上传至github。还应该在 repo 中包括出售的食谱吗?计划将这些食谱与 Chef Server 一起使用来为 rails 设置服务器。
.kitchen.yml
文件应该放在 cookbook 目录中。
所以有几个问题:首先正如@StephenKing 所说,您需要 .kitchen.yml
紧挨着 Berksfile
然后您还需要 运行 kitchen
来自该文件夹的命令。其次,您不需要(或不想)使用 berks vendor
,因为 Test Kitchen 有自己的 Berkshelf 支持,当您在正确的位置有 Berksfile 时,它会自动激活。