厨师属性中的通配符

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"}]

请记住,它会将您的散列转换为数组,但可以轻松还原。