在属性文件中检查节点属性为空或为空

时间:2017-05-23 08:45:02

标签: ruby chef chef-recipe devops chef-solo

如何在属性文件中检查我的属性是否包含值,空字符串或nil?

假设我在default.rb

中有这个

我只是不确定验证节点属性是否具有值或null的最佳方法是什么?

#<> Supply endpoint or not  < clients will supply this value or not in my run list >
default[:my_code][:my_endpoint] = ""

#Option 1
if node[:my_code][:my_endpoint] == ""
    default[:my_code][:my_endpoint] =  'default'
end

#Option 2
if node[:my_code][:my_endpoint].to_s.empty?
    default[:my_code][:my_endpoint] =  'default'
end

我目前无法对此进行测试,因为我的环境已经失效,所以我现在就把这个问题放在首位。我实际上没有尝试过Option 2.我只是为了谷歌搜索或者有更好的选择

1 个答案:

答案 0 :(得分:0)

我认为你的做法在这种情况下是错误的。您应该按照设计使用precedence levels。在属性文件中将my_endpoint设置为default。如有必要,可在任何更高级别覆盖它 - 食谱/环境/角色。