"致命:无法加载配置"在厨师 - 客户之后

时间:2017-07-13 11:44:37

标签: chef

我正在运行以下命令:

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"

它正确执行。有人知道这里发生了什么吗?

2 个答案:

答案 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文件导致了同样的问题。   如前所述,在命令行参数中使用绝对路径。