Chef无法解析我的cookbook名称。连名字都错了

时间:2017-06-18 07:41:50

标签: chef

我正在尝试在食谱中运行我的一个食谱。厨师无法找到它。下面是我的树。我试过的命令是

sudo chef-client --local-mode -runlist "recipe[apache::server]"

我甚至尝试过食谱的路径

sudo chef-client --local-mode -runlist "recipe[cookbooks/apache::server]"

以下是我得到的错误。奇怪的是,它在错误中显示的食谱名称是unlist,这不是我的食谱的名称。我的食谱名称为apache

[vagrant@localhost ~]$ sudo chef-client --local-mode -runlist "recipe[apache::server]"
[2017-06-18T07:24:32+00:00] WARN: No config file found or specified on command line, using command line options.
Starting Chef Client, version 12.14.89
resolving cookbooks for run list: ["unlist"]

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

Missing Cookbooks:
------------------
No such cookbook: unlist

Expanded Run List:
------------------
* unlist

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


Running handlers:
[2017-06-18T07:24:34+00:00] ERROR: Running exception handlers
Running handlers complete
[2017-06-18T07:24:34+00:00] ERROR: Exception handlers complete
Chef Client failed. 0 resources updated in 01 seconds
[2017-06-18T07:24:34+00:00] FATAL: Stacktrace dumped to /root/.chef/local-mode-cache/cache/chef-stacktrace.out
[2017-06-18T07:24:34+00:00] FATAL: Please provide the contents of the stacktrace.out file if you file a bug report
[2017-06-18T07:24:34+00:00] ERROR: 412 "Precondition Failed"
[2017-06-18T07:24:34+00:00] FATAL: Chef::Exceptions::ChildConvergeError: Chef run process exited unsuccessfully (exit code 1)

树形结构

[vagrant@localhost ~]$ tree
.
|-- cookbooks
|   `-- apache
|       |-- Berksfile
|       |-- chefignore
|       |-- metadata.rb
|       |-- README.md
|       |-- recipes
|       |   |-- default.rb
|       |   `-- server.rb
|       |-- spec
|       |   |-- spec_helper.rb
|       |   `-- unit
|       |       `-- recipes
|       |           |-- default_spec.rb
|       |           `-- server_spec.rb
|       `-- test
|           `-- recipes
|               |-- default_test.rb
|               `-- server.rb
|-- delete.rb
|-- hello.rb
|-- hellotodelet.rb
`-- nodes
    `-- localhost.json

2 个答案:

答案 0 :(得分:1)

问题是你有一个短划线-runlist,你需要两个破折号:--runlist

答案 1 :(得分:0)

好的,所以我觉得我找到了答案,但部分原因。所以我已经单独执行了配方,而没有使用runlist。因此,软件包已安装,服务已启动并正在运行。

sudo chef-client --local-mode cookbooks/apache/server.rb

所以它没有用。不知道为什么。我认为这些食谱应该是幂等的。无论如何,所以后来我写了另一个配方来卸载和禁用包&服务。当我重新运行server.rb时,它有效。

仍然不确定,但是第一次无法选择。一次又一次地运行它使它以相同的方式工作。因此,执行单个食谱和从食谱中执行食谱之间必定存在一些差异。