厨师独奏的麻烦 "Missing Cookbooks"
Trouble with chef-solo "Missing Cookbooks"
我正在尝试 运行 厨师独奏,我有以下配置
/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 在不同的服务器上尝试它。
每当我运行:
厨师独奏-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)
我很困惑,因为数据库 cookbook 似乎是用 berks 安装的,但 chef 没有捡起来。
如有任何帮助,我们将不胜感激。
谢谢。
迈尔斯.
Chef 不直接与 Berkshelf 集成,因此 chef-solo
对此一无所知。通常你会使用类似 knife-solo
的东西将它们联系在一起,但你也可以手动完成。 运行 berks vendor /path/to/a/folder
然后将该文件夹设置为 cookbook_path
.
我最终只是解决了这个问题。
我在虚拟主机上设置了一个厨师服务器,并对其进行了一些最终级别的测试。我创建了节点,引导它们,然后在节点上 运行 chef-client。
我也没有很大的服务器配置,所以我只是手动上传了cookbooks和依赖的cookbooks。我很确定这就是零号厨师失败的原因。在未来的某个时候,我会让 Berkshelf 与所有东西一起工作,以帮助简化食谱依赖过程。
我正在尝试 运行 厨师独奏,我有以下配置
/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 在不同的服务器上尝试它。
每当我运行: 厨师独奏-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)
我很困惑,因为数据库 cookbook 似乎是用 berks 安装的,但 chef 没有捡起来。
如有任何帮助,我们将不胜感激。
谢谢。 迈尔斯.
Chef 不直接与 Berkshelf 集成,因此 chef-solo
对此一无所知。通常你会使用类似 knife-solo
的东西将它们联系在一起,但你也可以手动完成。 运行 berks vendor /path/to/a/folder
然后将该文件夹设置为 cookbook_path
.
我最终只是解决了这个问题。
我在虚拟主机上设置了一个厨师服务器,并对其进行了一些最终级别的测试。我创建了节点,引导它们,然后在节点上 运行 chef-client。
我也没有很大的服务器配置,所以我只是手动上传了cookbooks和依赖的cookbooks。我很确定这就是零号厨师失败的原因。在未来的某个时候,我会让 Berkshelf 与所有东西一起工作,以帮助简化食谱依赖过程。