我的厨师config.json文件出了什么问题?

时间:2014-04-28 10:23:04

标签: json chef

这是我的config.json文件:

{
        "run_list": ["recipe[test]"]
}

这是错误:

FATAL: Configuration error SyntaxError: config.json:2: syntax error, unexpected ':', expecting tASSOC
    "run_list": ["recipe[test]"]
               ^
config.json:3: syntax error, unexpected '}', expecting $end
[2014-04-28T12:22:01+02:00] FATAL: Aborting due to error in 'config.json'

为什么??? :(

3 个答案:

答案 0 :(得分:0)

发生错误是因为你的" json"实际上被解析为Ruby:

$ irb
irb(main):001:0> {
irb(main):002:1*         "run_list": ["recipe[test]"]
irb(main):003:1> }
SyntaxError: (irb):2: syntax error, unexpected ':', expecting tASSOC
        "run_list": ["recipe[test]"]
                   ^
(irb):3: syntax error, unexpected '}', expecting $end

所以要么a)找出为什么它没有被解析为JSON。

或b)以Ruby格式编写配置:

{ "run_list" => ["recipe[test]"] }

# or 

{ run_list: ["recipe[test]"] }

或c)将json字符串转换为Ruby:

require 'json'
JSON.parse('{ "run_list": ["recipe[test]"] }')

=> {"run_list"=>["recipe[test]"]}

答案 1 :(得分:0)

我有这个错误。对我来说,我必须将我从myRole.rb更改为myRole.json(使用mv myRole.rb myRole.json),然后执行knife role from file myRole.json并按预期工作。

答案 2 :(得分:0)

我自己遇到了这个问题,在经过大量寻找答案后,我发现自己遇到了问题,因为我使用的是-f标志,而不是j。该命令应如下所示:

$ chef-client -j <file>.json