麻烦与厨师独奏“失踪的食谱”

时间:2016-09-21 01:08:31

标签: ruby chef chef-solo

我正在尝试运行chef-solo,我有以下配置

/var/chef

├── cookbooks
│   ├── cc_db
│   │   ├── Berksfile
│   │   ├── Berksfile.lock
│   │   ├── chefignore
│   │   ├── metadata.rb
│   │   ├── recipes
│   │   │   └── default.rb
├── node.json
└── solo.rb

node.json

{
  "run_list": [ "recipe[cc_db]" ]
}

solo.rb

file_cache_path "/var/chef"
  cookbook_path "/var/chef/cookbooks"
  json_attribs "/var/chef/node.json"

metadata.rb

depends 'database', '~> 5.1.2'
depends 'mysql2_chef_gem', '~> 1.0'

我已经在厨房测试环境中使用它,但我现在正在使用chef-solo在不同的服务器上尝试。

每当我跑: chef-solo -c solo.rb

我明白了:

resolving cookbooks for run list: ["cc_db"]

================================================================================
Error Resolving Cookbooks for Run List:
================================================================================

Missing Cookbooks:
------------------
No such cookbook: database

Expanded Run List:
------------------
* cc_db

Platform:
---------
x86_64-linux


Running handlers:
[2016-09-20T15:34:05-04:00] ERROR: Running exception handlers
Running handlers complete
[2016-09-20T15:34:05-04:00] ERROR: Exception handlers complete
Chef Client failed. 0 resources updated in 02 seconds
[2016-09-20T15:34:05-04:00] FATAL: Stacktrace dumped to /var/chef/chef-stacktrace.out
[2016-09-20T15:34:05-04:00] FATAL: Please provide the contents of the stacktrace.out file if you file a bug report
[2016-09-20T15:34:05-04:00] ERROR: 412 "Precondition Failed"
[2016-09-20T15:34:05-04:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)

我很困惑,因为数据库食谱似乎与berks一起安装,但是厨师没有把它拿起来。

任何帮助将不胜感激。

感谢。 迈尔斯。

2 个答案:

答案 0 :(得分:0)

Chef没有直接与Berkshelf集成,因此chef-solo对此一无所知。通常你会使用类似knife-solo的东西将它们绑在一起,但你也可以手动完成。运行berks vendor /path/to/a/folder,然后将该文件夹设置为cookbook_path

答案 1 :(得分:0)

我最终解决了这个问题。

我在虚拟主机上设置了一个主厨服务器,并对其进行了最后一级测试。我创建了节点,引导它们,然后在节点上运行chef-client。

我也没有非常大的服务器配置,所以我只是手工上传了烹饪书和从属烹饪书。我非常确定为什么厨师零失败了。在未来的某个时刻,我将让Berkshelf与所有内容一起工作,以帮助简化菜谱依赖过程。