我正在尝试在食谱中运行我的一个食谱。厨师无法找到它。下面是我的树。我试过的命令是
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
答案 0 :(得分:1)
问题是你有一个短划线-runlist
,你需要两个破折号:--runlist
。
答案 1 :(得分:0)
好的,所以我觉得我找到了答案,但部分原因。所以我已经单独执行了配方,而没有使用runlist
。因此,软件包已安装,服务已启动并正在运行。
sudo chef-client --local-mode cookbooks/apache/server.rb
所以它没有用。不知道为什么。我认为这些食谱应该是幂等的。无论如何,所以后来我写了另一个配方来卸载和禁用包&服务。当我重新运行server.rb
时,它有效。
仍然不确定,但是第一次无法选择。一次又一次地运行它使它以相同的方式工作。因此,执行单个食谱和从食谱中执行食谱之间必定存在一些差异。