我正在运行以下命令:
chef-client --local-mode -j deploy-backend.json
Run Code Online (Sandbox Code Playgroud)
JSON文件包含:
{
"run-list" : [
"deploy-dev::sysprepare",
"deploy-dev::deploybackend",
"deploy-dev::deploynginx"
]
}
Run Code Online (Sandbox Code Playgroud)
现在问题是: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
Run Code Online (Sandbox Code Playgroud)
我省略了大部分输出,"重装服务[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"
Run Code Online (Sandbox Code Playgroud)
它正确执行.有谁知道这里发生了什么?
你应该使用你的json的完整路径
sudo chef-client --local-mode -j /opt/chef/cookbooks/deploy-backend.json
Run Code Online (Sandbox Code Playgroud)