这是我的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'
为什么??? :(
答案 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