2013-09-26 149 views
1

在Puppet 3中,我希望能夠根據RPM軟件包的安裝版本在清單內進行分支。我認爲這很簡單,只需在包資源上查找version(或ensure?)屬性並在條件表達式中使用它即可。但是對於我來說,即使在梳理參考手冊之後,我也無法弄清楚如何從資源之外獲取資源的屬性。我可以從資源外部訪問清單內的資源屬性嗎?

+0

這是不可能的,因爲@ mrhobo說。關鍵在於你在傀儡中描述了你想要的狀態(而沒有別的);在這裏你告訴傀儡你的期望狀態取決於機器中已經安裝的內容。這不是傀儡的目的。 –

+0

這不是真正的安裝情況,而是從可用的RPM回購庫中安裝的東西,這是我無法控制的。 (但也許這是一個更好的方法來解決這個問題 - 把RPM放在我可以控制它們的地方。) – L2G

+1

好吧,我明白了。是的,你的清單應該說明你想要的rpm包的哪個版本(在代碼中,在hiera或別的地方說過);然後,您可以基於該版本進行分支。如果您不能使用標準軟件包puppet資源來安裝軟件包(您確定嗎?可以配置puppet軟件包資源:http://docs.puppetlabs.com/references/latest/type.html#package),那麼您可以使用puppet exec來安裝它:http://docs.puppetlabs.com/references/latest/type.html#exec –

回答

1

不幸的是,訪問資源的屬性是不可能的。看看我最近問的similar question。如果您將套餐版本設置爲類屬性,hiera數據或both,則可以使用這些來根據您的條件。