我正在尝试运行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一起安装,但是厨师没有把它拿起来。
任何帮助将不胜感激。
感谢。 迈尔斯。
答案 0 :(得分:0)
Chef没有直接与Berkshelf集成,因此chef-solo
对此一无所知。通常你会使用类似knife-solo
的东西将它们绑在一起,但你也可以手动完成。运行berks vendor /path/to/a/folder
,然后将该文件夹设置为cookbook_path
。
答案 1 :(得分:0)
我最终解决了这个问题。
我在虚拟主机上设置了一个主厨服务器,并对其进行了最后一级测试。我创建了节点,引导它们,然后在节点上运行chef-client。
我也没有非常大的服务器配置,所以我只是手工上传了烹饪书和从属烹饪书。我非常确定为什么厨师零失败了。在未来的某个时刻,我将让Berkshelf与所有内容一起工作,以帮助简化菜谱依赖过程。