如何在Chef配方中使用自定义JSON属性

时间:2015-12-23 09:51:06

标签: json chef aws-opsworks

我是JSON的新手。我在AWS Opswork中创建了自定义JSON,并尝试将其作为Chef配方中的属性进行访问,但遗憾的是它没有捕获JSON值。我的JSON文件看起来像..

{

 "normal": { 
 "filebeat_minjar": {
 "log_path" : "/var/log/*.log",
 "hosts" : "Some Random Host ID", 
 "port"  : 5000
 }
 }
}

我想在食谱中抓住它,

log = node['filebeat_minjar']['log_path']
hosts = node['filebeat_minjar']['hosts']
port = node['filebeat_minjar']['port']

但它失败了,我也试过没有'正常'。我得到了一些[] null类错误。

3 个答案:

答案 0 :(得分:0)

试试这种方式,

log = node['normal']['filbeat_minjar']['log_path']
hosts = node['normal']['filbeat_minjar']['hosts']
port = node['normal']['filbeat_minjar']['port']

log = node.normal.filbeat_minjar.log_path
hosts = node.normal.filbeat_minjar.hosts
port = node.normal.filbeat_minjar.port

Json对象就像一棵树,元素就是树枝。 希望这个帮助

答案 1 :(得分:0)

您的Chef代码是正确的,但您需要修复JSON。您不需要"normal": {...},Chef和OpsWorks将为您处理。{/ p>

答案 2 :(得分:0)

以下为我工作。

自定义JSON

{

“生产”:{     “ApplicationLayer”:{     “DockerTag”:“Version1”     }   }

}

来自大厨食谱。

node[:Production][:ApplicationLayer][:DockerTag]