在指定最新版本时获取Puppet中包装的安装版本

问题描述:

当木偶中的包裹设置为latest时,如何检索安装的版本?在指定最新版本时获取Puppet中包装的安装版本

在以下示例中,jenkins程序包设置为下载可用的最新库。但下载后,我想要获得实际安装的版本。

package { 'jenkins': 
    ensure => latest, 
} 

最简单的方法是自定义事实。根据您的操作系统,你可以为一个RedHat机器做这样的事情:

Facter.add("jenkins_version") do 
    confine :osfamily => 'RedHat' 
    setcode do 
    Facter::Util::Resolution.exec("/bin/rpm -q jenkins") 
    end 
end 

然后你就会有一个$::jenkins_version事实上,你可以用notify{$::jenkins_version:}

+2

输出记住,事实被设定在开始运行,所以如果jenkins在运行中更新,这会告诉你在更新之前安装的版本。 – daxlerod

+0

对,我正在考虑这个限制。看起来已安装的软件包的版本必须立即返回(或通知)。在我的情况下,我需要安装的软件包版本来填充配置文件,所以使用facter并不能满足我的需要。 – pat

+2

Puppet并不适合提供这种场景。你必须弯曲两个不舒服的方向之一。 1)你的事实代表了** jenkins的可用**版本,你的清单是忠实的,确保更新确实有效。 2)毕竟你并没有使用事实,并且使Puppet使用'exec'资源在代理端用脚本填充所述配置文件,该资源在运行时读取版本。正如我所说,这两个选项都有相当严重的缺点。 –