【问题标题】:Trouble with chef-solo "Missing Cookbooks"厨师独奏“缺少食谱”的麻烦
【发布时间】:2016-10-18 21:44:12
【问题描述】:

我正在尝试运行 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"

元数据.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 安装的,但厨师没有拿起它。

任何帮助将不胜感激。

谢谢。 迈尔斯。

【问题讨论】:

    标签: ruby chef-infra chef-solo


    【解决方案1】:

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

    【讨论】:

    • 我已经运行berks vendor [cookbook_path],但仍然出现错误。我想知道为什么我们已经在 solo.rb 中定义了路径,但 chef-solo 找不到食谱??
    【解决方案2】:

    我最终只是解决了这个问题。

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

    我也没有很大的服务器配置,所以我只是手动上传了cookbook和依赖cookbook。我很确定这就是Chef-zero失败的原因。在未来的某个时候,我会让 Berkshelf 与所有东西一起工作,以帮助简化说明书的依赖过程。

    【讨论】:

      猜你喜欢
      • 2015-11-27
      • 1970-01-01
      • 1970-01-01
      • 2015-01-12
      • 2015-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-17
      相关资源
      最近更新 更多