Debian

繼續升級某些 Debian 發行版中的所有內容(包括發行版)?

  • January 11, 2018

如何以安全的方式持續升級發行版中的所有內容(包括一些 Debian 發行版)?

為什麼我問這個問題

我問這個問題是因為當我的 Nginx 環境安裝腳本越來越大,並且需要越來越多的時間來維護時,我感覺自己做錯了什麼。

由於學習、實踐和社區共享,維護腳本是我可以並且喜歡處理的事情,即使我必須盡快作為員工出去工作並且維護這些腳本的時間會更少。鑑於這些情況,我總是有這樣的恐懼:

– 如果我目前的發行版 LTS 不再受支持怎麼辦。

– 即使它是 Debian 穩定版而不是其他東西,我也可能因為幾個月前的舊發行版而出現安全漏洞,但僅此而已。

  • 如果一個配置良好的unattended-upgrades版本不足以讓我安全安靜,因為發行版已經過時等等。

至於現在,我在 DigitalOcean 中為一個 droplet 支付 5 美元,我真的不知道擁有具有以下特性的 LEMP 堆棧的最佳解決方案是什麼:

  • 可免費訪問的 Bash。
  • 無人值守升級。
  • CSF-LFD 和 Maldet。
  • Certbot 處理的 webapp confs。
  • 我在 cron 中創建的即時和自動 cron 備份(在我的腳本中可用)。
  • 自動發行版升級(比如從 Ubuntu 16.04 到 18.04 以及從 18.04 到 20.04 等等),無需我手動移動數據,即使使用rsync.
  • WordPress網站
  • 命令行界面
  • VPS 不超過 10 美元。

我不確定 Ansible 或 Salt 是否是答案(Ansible 在我看來並不是很容易學習,儘管它在市場上被傳言很容易學習,而且我擔心我沒有時間研究它在接下來的 3 個月內進行深入研究)。

我不確定 Azure 是否是答案(僅因為價格,我了解我想要的環境在 Azure 中至少要花費 15 美元)。

也許我需要一個在每個基本方面都具有持續傳遞能力的發行版(假設有一個)。

基本上就是這樣的故事。

好的 CI(持續集成)至少依賴於三件事:

  1. 腳本化部署
  2. 帶外測試環境
  3. 覆蓋整個表面的自動化測試。

你目前只有#1。另一個 VPS 可以作為 #2,但您沒有任何(明顯的)測試。


但在我們進一步討論之前,請簡要說明一下支持基於節奏的版本。

Ubuntu LTS 版本在發布後五年內獲得更新。不是每個包,而是 LEMP 所需的一切。這些更新支持來自未來版本的安全修復,因此您可以獲得帶有現代修復的舊主要版本(如果可能)。這意味著事情繼續進行。

滾動發布隨時更新所有內容。您不知道什麼時候會發生破壞配置的更改(例如 systemd),或者需要多少工作才能修復。如果您要自動安裝更新,這也意味著在時間需求上沒有可預測的間隔。

使用 Ubuntu LTS,您知道每 4-5 年您需要在伺服器上花費一兩個小時來指導它完成升級。您可以在下一個 LTS 發布後的 3 年內**選擇何時執行此操作。**這是一個主要特點,而不是一個缺陷。


對於你的作戰計劃,我會——也許是有爭議的——完全禁用自動更新,並用一個相對簡單的腳本替換它們:

  • 啟動第二個 VPS(使用供應商的 API,因此您只需在執行時為其付費)。基於相同作業系統版本的模板(例如 Ubuntu 16.04,如果您的主 VPS 位於該模板上)。
  • 更新到您的軟體的最新版本,部署您的東西並恢復數據庫
  • 執行您的測試套件並報告所有服務的正面或負面
  • 失敗時向您發送電子郵件,apt dist-upgrade成功時在主 VPS 上執行。

如果您沒有獲得更新,獲得**響亮的回饋是關鍵。**是的,您也需要對其進行測試。

您可以遷移到 Ansible(等),但這不是您的主要問題。寫作測試是。

這是一項繁重的工作,但這些東西也讓你有利於擴大規模和擴大規模。如果您達到了擁有負載平衡集群的地步,您可以分離一個,對其進行更新並進行測試,然後再將其重新引入集群。

引用自:https://unix.stackexchange.com/questions/415987