Linux

如何“yum update”/“aptitude safe-upgrade”許多主機?

  • July 16, 2017

我有兩本關於 Puppet 的書,但都沒有提到如何推動yum updateaptitude safe-upgrade.

所以我得到的印像是 Puppet 做不到,我很難相信。

問題

您每個月將如何推送yum update或在許多不同的主機上?aptitude safe-upgrade

Puppet 實際上只是一個配置管理實用程序,而不是自動化工具。如果您想要適當的自動化,那麼您會想要查看 mcollective,它最初是一個 3rd 方工具,現在已被納入 puppetlabs 的保護傘下。沒有與 mcollective 合作過,我也不能說它處理這個問題的效果如何,但我的理解是,它作為任意任務執行機制效果最好,在嘗試執行定期重複任務時效果不佳.

我相信最好的方法是開發一個你想要更新的腳本和流程,然後使用 puppet 推出配置。所以問自己以下問題。

  1. 我希望機器多久更新一次?
  2. 我是希望他們在安裝新核心時自動重啟,還是只需要通知?
  3. 我們應該在更新期間執行任何特殊命令嗎?
  4. 我是否有足夠的系統可以錯開更新?

當您開始建構配置並回答這些問題時,您可能會發現更多來自您的特定環境的內容。對於一個具體的例子,我所做的是:

  • 對於我的大多數係統更新是每週一次,通過 cron 作業。根據目的和環境,某些系統的使用頻率更高。
  • 大多數係統會自動重啟,某些系統(取決於目的)會通過電子郵件提醒重啟。這是通過 cron 作業處理的,該作業檢查最高版本編號的 vmlinuz 文件/bootuname -r
  • 在被 RHEL 5.3->5.4 的 glibc 更新燒毀後,我確保更新 yum,然後是 glibc,然後是其他所有內容。
  • 由於所有這些都是由 cron 作業執行的,因此我在每次 yum 執行之間隨機睡眠。每個主機可能需要 5 分鐘到 45 分鐘才能完成,這可以合理地分散負載。

這都包含在兩個文件中,兩個 cron 條目(更新和核心檢查)儲存在/etc/cron.d和更新腳本中。我正在使用一個看起來越來越凌亂的 shell 腳本來執行此操作,該腳本採用命令行參數來執行更新或核心檢查以及是否重新啟動。然後 Puppet 管理這兩個文件。由於您同時處理基於 rpm 和 dpkg 的系統,我可能會創建兩個腳本或do_update為這兩種風格創建單獨的函式,並使用不同的命令行開關呼叫每個腳本。然後,您可以通過檢查operatingsystem文件聲明中的事實來推出正確的腳本,或者模板化 cron 條目並使用相同的事實來決定使用哪個開關。

使用經過良好測試的腳本,這種方法效果很好。好吧,事實上,這種設置已經成功使用了幾年來處理數百個系統。當核心打包程序開始向文件添加越來越多級別的次要版本並且比較常式阻塞時,我們偶爾會看到打嗝。

引用自:https://serverfault.com/questions/411049