2013-07-17 11 views
12

我知道在puppet中執行apt-get更新的基礎知識,它只是在特定的包之前運行apt-get update,但是隻想指定僅運行apt-get update一次,然後執行puppet文件的其餘部分。那可能嗎?傀儡apt-get更新之前只有一次?

列出的所有方法Here都需要在每個包之前運行apt-get或使用箭頭或需要指定每個包。

回答

28

這將是從該列表我的推薦:

exec { "apt-update": 
    command => "/usr/bin/apt-get update" 
} 

Exec["apt-update"] -> Package <| |> 

這將確保高管被之前運行任何包,不就是EXEC是每個包之前運行。實際上,木偶中的任何資源只能是,每個木偶運行最多執行一次

但是,如果你想在EXEC任何類型的資源我想你可以做這樣的事情發生之前:

exec { "apt-update": 
    command => "/usr/bin/apt-get update", 
    before => Stage["main"], 
} 

「主」舞臺是每個資源的默認階段,因此這將讓exec在別的之前發生。

我希望這有助於。

+0

謝謝Sekm。我誤解了它是如何工作的,並想着是否有5個包例如它會運行apt-get update 5次。感謝您解釋它,併爲第二個選項,因爲它可以派上用場其他的東西。 – isimmons

1

隨着puppetlabs-apt模塊,它應該是足夠的定義將被安裝任何包模塊上的依賴關係:的apt

Class['apt'] -> Package<| |> 

這是假設的基本配置,如:

class { 'apt': 
    update => { 
     frequency => 'daily', 
    }, 
    purge => { 
     'sources.list' => false, 
     'sources.list.d' => true, 
    }, 
    } 
+0

這是更好的答案;它是Puppet文檔中推薦的一個,它避免了必須手動指定一個exec命令。 –