厨师属性中的通配符
wildcards in chef attributes
我正在尝试从 OHAI 为 windows 机器
获取安装包 Firefox 的版本
ohai 的输出包含类似
的包信息
"ohai_time": 1540893742.872569,
"packages": {
"Mozilla Firefox 62.0.2 (x64 en-US)": {
"version": "62.0.2",
"publisher": "Mozilla"
},
"Mozilla Maintenance Service": {
"version": "62.0.2",
"publisher": "Mozilla"
},
"Symantec NetBackup Client": {
"version": "7.7.2",
"publisher": "Symantec Corporation",
"installdate": "20180618"
}, .....
......so on...
问题是我不能使用这里使用的全名,因为它包含版本本身
否则我可以使用
节点['packages']['Mozilla Firefox 62.0.2 (x64 en-US)']['version']
相反,我想使用像 node['packages']["Mozilla*"]['version']
这样的东西
我试过使用循环和.include?但是没有用。
我在这里有什么选择?使用 ruby 或循环或任何其他方式
提前感谢您的回复。
如果是您粘贴的散列,您可以使用 find
方法:
node["packages"].find { |key, _| key =~ /Mozilla Firefox/ }
=> [:"Mozilla Firefox 62.0.2 (x64 en-US)", {:version=>"62.0.2", :publisher=>"Mozilla"}]
请记住,它会将您的散列转换为数组,但可以轻松还原。
我正在尝试从 OHAI 为 windows 机器
获取安装包 Firefox 的版本ohai 的输出包含类似
的包信息 "ohai_time": 1540893742.872569,
"packages": {
"Mozilla Firefox 62.0.2 (x64 en-US)": {
"version": "62.0.2",
"publisher": "Mozilla"
},
"Mozilla Maintenance Service": {
"version": "62.0.2",
"publisher": "Mozilla"
},
"Symantec NetBackup Client": {
"version": "7.7.2",
"publisher": "Symantec Corporation",
"installdate": "20180618"
}, .....
......so on...
问题是我不能使用这里使用的全名,因为它包含版本本身
否则我可以使用 节点['packages']['Mozilla Firefox 62.0.2 (x64 en-US)']['version']
相反,我想使用像 node['packages']["Mozilla*"]['version']
这样的东西我试过使用循环和.include?但是没有用。 我在这里有什么选择?使用 ruby 或循环或任何其他方式
提前感谢您的回复。
如果是您粘贴的散列,您可以使用 find
方法:
node["packages"].find { |key, _| key =~ /Mozilla Firefox/ }
=> [:"Mozilla Firefox 62.0.2 (x64 en-US)", {:version=>"62.0.2", :publisher=>"Mozilla"}]
请记住,它会将您的散列转换为数组,但可以轻松还原。