1
當木偶中的包裹設置爲latest
時,如何檢索安裝的版本?在指定最新版本時獲取Puppet中包裝的安裝版本
在以下示例中,jenkins
程序包設置爲下載可用的最新庫。但下載後,我想要獲得實際安裝的版本。
package { 'jenkins':
ensure => latest,
}
當木偶中的包裹設置爲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:}
輸出記住,事實被設定在開始運行,所以如果jenkins在運行中更新,這會告訴你在更新之前安裝的版本。 – daxlerod
對,我正在考慮這個限制。看起來已安裝的軟件包的版本必須立即返回(或通知)。在我的情況下,我需要安裝的軟件包版本來填充配置文件,所以使用facter並不能滿足我的需要。 – pat
Puppet並不適合提供這種場景。你必須彎曲兩個不舒服的方向之一。 1)你的事實代表了** jenkins的可用**版本,你的清單是忠實的,確保更新確實有效。 2)畢竟你並沒有使用事實,並且使Puppet使用'exec'資源在代理端用腳本填充所述配置文件,該資源在運行時讀取版本。正如我所說,這兩個選項都有相當嚴重的缺點。 –