我正在运行以下命令:
chef-client --local-mode -j deploy-backend.json
JSON文件包含:
{
"run-list" : [
"deploy-dev::sysprepare",
"deploy-dev::deploybackend",
"deploy-dev::deploynginx"
]
}
现在出现问题:chef-client命令成功运行但在运行配方后最终出现致命错误:
$ sudo chef-client --local-mode -j cookbooks/deploy-backend.json
[2017-07-13T13:19:11+02:00] WARN: No config file found or specified on command line, using command line options.
Starting Chef Client, version 13.2.20
resolving cookbooks for run list: ["deploy-dev::sysprepare", "deploy-dev::deploybackend", "deploy-dev::deploynginx"]
Synchronizing Cookbooks:
- deploy-dev (0.1.0)
Installing Cookbook Gems:
Compiling Cookbooks...
Converging 29 resources
Recipe: deploy-dev::sysprepare
...
...
- reload service service[nginx]
Running handlers:
Running handlers complete
Chef Client finished, 11/33 resources updated in 01 minutes 32 seconds
[2017-07-13T13:20:43+02:00] WARN: No config file found or specified on command line, using command line options.
[2017-07-13T13:20:43+02:00] WARN: No config file found or specified on command line, using command line options.
[2017-07-13T13:20:43+02:00] FATAL: Cannot load configuration from cookbooks/deploy-backend.json
[2017-07-13T13:20:43+02:00] FATAL: Cannot load configuration from cookbooks/deploy-backend.json
我省略了大部分输出,"重新加载服务[nginx]"是运行列表中的最后一个资源。我已手动验证配方是否正确运行,但我在最后收到了FATAL错误(这是从CI作业调用的,因此我的CI管道因此而失败)。
这很奇怪,因为食谱的执行顺利。我使用的是chef-client版本13.2.20。如果我使用的是Chef-client的12版,那么执行正常。如果我只是通过了运行列表:
chef-client --local-mode -r "deploy-dev::sysprepare,deploy-dev::deploybackend,deploy-dev::deploynginx"
它正确执行。有人知道这里发生了什么吗?
答案 0 :(得分:9)
你应该使用你的json的完整路径
sudo chef-client --local-mode -j /opt/chef/cookbooks/deploy-backend.json
答案 1 :(得分:1)
这看起来像一个已知的错误。 https://github.com/chef/chef/issues/6427
solo.rb文件导致了同样的问题。 如前所述,在命令行参数中使用绝对路径。