2012-11-07 28 views

回答

0

您可以創建一個包含exec資源的模塊。

> exec { 
> 
>   "couchdb": 
>   command => "/usr/bin/yum -y -d 0 install couchdb-1.2.0-7.el6", 
>   path => "/usr/local/bin/:/bin/", 
> 
> } 

作爲一個測試我做了一個更新我的wget。在運行模塊之前,wget是1.11.4-2.el5。在我的倉庫中,我有1.11.4-3.el5_8.1。

這裏是我的「百勝更新列表wget.x86_64」的結果:

Installed Packages 
wget.x86_64    1.11.4-2.el5        installed 

Available Packages 
wget.x86_64    1.11.4-3.el5_8.1       update 

這是應用類(使用調試選項向您展示的輸出中)後,我的木偶輸出:

調試:執行 '的/ usr /斌/蔭-y -d 0更新wget.x86_64' 通知: /階段[主要] /蔭更新測試/執行[wget的] /回報:成功執行

這是類/模塊後的「百勝更新列表wget.x86_64」的輸出應用:

Installed Packages 
wget.x86_64    1.11.4-3.el5_8.1       installed 
+0

這是一種解決方法。但有幫助。謝謝。 – imdhmd

+0

exec方法的問題在於它不會是冪等的。每次運行都會執行這個命令。另一方面,如果puppet檢測到這個包已經安裝(這很好),puppet的package resource命令將不會執行此操作。您可以考慮使用exec的created/only-if/unless屬性來執行條件執行。 – Gurpreet

0

在等待真正的解決通過這個票: https://tickets.puppetlabs.com/browse/PUP-3453

你唯一的解決辦法是直接修改yum包提供商: /usr/lib/ruby/site_ruby/1.8/puppet/provider/package/yum.rb

def install 
wanted = @resource[:name] 
# If not allowing virtual packages, do a query to ensure a real package exists 
unless @resource.allow_virtual? 
    yum *['-d', '0', '-e', '0', '-y', install_options, :list, wanted].compact 
end 

改變「-D」值爲10,你會完成

0

如果您多次提供yum -d-e選項,它將使用最近的值。所以,你也可以在你的軟件包資源上使用install_options。例如:

package { 'wget': 
    install_options => ['-d' , '10' , '-e' , '1' , '-v'], 
} 

你的傀儡日誌隨後將包括類似:

2017-10-19 14:02:48 +0000 Puppet (debug): Executing: '/usr/bin/yum -d 0 -e 0 -y -d 10 -e 1 -v install wget' 

...和所有的調試輸出。