Chef节点属性

时间:2017-10-23 07:55:49

标签: ruby chef

我想检查属性的以下路径是否存在:

s3_bucket = node['elastic']['s3']['bucket']

这是json:

"elastic": {
   "version": "5.4.1",
   "cluster": "cluster-dev",
   "node": "node1",
   "host": "localhost",
   "port": 9201,
   "username": "elasticsearch",
   "groupname": "elasticsearch",
   "s3" : {
      "bucket": "hello"
   }
}

根据环境,字段s3可能不存在,我想在获取属性桶之前检查一下。我怎么能这样做?

2 个答案:

答案 0 :(得分:3)

对于较新的Chef,您可以使用node.read方法:

s3_bucket = node.read('elastic', 's3', 'bucket')

如果没有任何介入密钥,它将是nil

答案 1 :(得分:1)

s3_bucket = node['elastic']['s3']['bucket'] if node['elastic']['s3']