我想收集yum频道中可用的最新java版本。那么我可以告知客户他们是否乐意进行升级。在这种情况下,他们将在任何更改之前了解使用Chef包升级功能的版本。
解决方案: 您可以使用Ohai插件执行此操作,方法是执行类似的命令并存储为属性:
root@servername DEV # yum list all jre1.*[5,6,7,8,9].* | tail -n 1
jre1.8.0_72.x86_64 1.8.0_72-fcs repositoryname
root@servername DEV #
这是在一个帖子中讨论的,我确认它有效。 How to find out version of software package installed on the node?
我正在寻找简化这种方法或尽可能优雅的方式。 基本上,问题是什么版本将安装yum upgrade / Chef包升级?
答案 0 :(得分:0)
使用shell_out
应该针对您的用例,即使我没有真正实现所有这一切的最终目标。
node.set['whaterver']['attribute'] = shell_out("yum list all jre1.*[5,6,7,8,9].* | tail -n 1 | cut -f 2").stdout.strip
文档是here。 Recipe DSL shell_out
是一个包装器,它的工作方式与Mixin::ShellOut.new
一样,具有一些健全性检查。