2016-03-08 200 views

回答

1

最簡單的方法是自定義事實。根據您的操作系統,你可以爲一個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'資源在代理端用腳本填充所述配置文件,該資源在運行時讀取版本。正如我所說,這兩個選項都有相當嚴重的缺點。 –