[英]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
”,原因有兩個。
apt-get
不再次運行命令或手動運行其他apt / dpkg命令, apt-get
可能會升級具有沖突配置或無法解決的其他問題的程序包。 相反,對應始終更新到最新版本的軟件包使用“升級”操作。
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.