簡體   English   中英

Chef中的apt-get update和apt-get升級

[英]apt-get update and apt-get upgrade in Chef

如果Chef中的package "nginx"在Ubuntu節點上被翻譯成apt-get install nginx ,那么可以在Chef配方中編寫的內容將轉換為:

apt-get -y update
apt-get -y upgrade

無法從apt食譜中找到答案

Opscode“apt”cookbook的默認配方將運行apt-get update以確保apt-get update包緩存。 我們建議您盡早將其放在節點的運行列表中,以便稍后可以使用正確的版本安裝軟件包。

我們通常不建議用戶在配方中使用“ apt-get upgrade ”,原因有兩個。

  1. apt-get不再次運行命令或手動運行其他apt / dpkg命令, apt-get可能會升級具有沖突配置或無法解決的其他問題的程序包。
  2. 系統上所有軟件包的自動升級可能會對正在運行的系統產生意想不到的副作用(邊緣情況很多,可能很棘手,因此我無法全部覆蓋它們)。

相反,對應始終更新到最新版本的軟件包使用“升級”操作。

package "nginx" do
  action :upgrade
end

如果您正在重復使用定義食譜的食譜,您可以編寫修改現有資源操作的食譜,如下所示:

resources("package[nginx]").action(:upgrade)

配方中的#resources方法將在資源集合中查找指定的資源(包nginx)。 然后使用參數:upgrade發送#action方法將告訴Chef該操作應該是升級。

編輯 更新 :選擇以這種方式自動升級的軟件包時要小心。 包中的上游變化可能對系統造成不利影響。 如果此類程序包重新啟動它在安裝后腳本期間管理的服務,則尤其如此。 了解您的基礎架構,如果有疑問,請運行您自己的軟件包存儲庫,其中包含應用程序堆棧所需的關鍵軟件包。

每個廚師都不會更新Apt廚師食譜。 控制它的屬性稱為periodic_update_min_delay ,並設置為86400(該屬性應稱為sec_delay)。 如果以下文件存在且超過24小時,則apt將更新緩存。

/var/lib/apt/periodic/update-success-stamp

apt配方(default.rb)似乎還包含一個強制更新配方可以調用的指令。

# For other recipes to call to force an update
execute 'apt-get update' do

如果你這樣做,你會想要一個not_if來避免經常運行它,此時你也可以自己手動調用它。 我厭倦了這個,最后只是在安裝之前在一節中調用apt-get update。

execute "apt-get-update" do
  command "apt-get update"
end

我懷疑安全更新的長期解決方案是將更新延遲設置為幾個小時。

暫無
暫無

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

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