簡體   English   中英

除非沒有任何更改,否則在每次運行Puppet之前都要更新apt,在每次運行Puppet之后都要擦除apt緩存

[英]Update apt before every Puppet run unless nothing has changed, wipe apt cache after every Puppet run

我正在使用Docker容器中的Puppet Agents,因此使用盡可能少的文件系統空間非常重要。 因此,在我的Docker bulid的最后, 我正在運行以下命令

RUN apt-get clean && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*

問題是我的Puppet運行時嘗試安裝軟件包,並且由於沒有列表可供提取,因此失敗。 一個簡單的apt-get update可使所有程序正常運行。

我正在從其存儲庫中運行最新的Puppet 3客戶端。 如何使用階段要求對每個Puppet運行進行以下包裝:

  1. 首先,僅當該實例的Puppet目錄已更改時,才運行apt-get update (即:如果什么都沒有改變,請不要做任何事情,也不要進行更新,因為這會浪費周期,帶寬,資源等)
  2. 完成所有操作后,運行apt-get clean清除所有內容,並可能運行與上面列出的Docker RUN命令等效的命令。

如何使用Puppet執行階段來智能地包裝Puppet運行,預先更新apt並隨后清除緩存?

如果使用puppetlabs-apt模塊,則只需定義:

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

否則使用:

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

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

如果缺少某些軟件包,將以這種方式執行apt update

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM