![如何維護同一台電腦安裝的 40 個副本?](https://rvso.com/image/1554907/%E5%A6%82%E4%BD%95%E7%B6%AD%E8%AD%B7%E5%90%8C%E4%B8%80%E5%8F%B0%E9%9B%BB%E8%85%A6%E5%AE%89%E8%A3%9D%E7%9A%84%2040%20%E5%80%8B%E5%89%AF%E6%9C%AC%EF%BC%9F.png)
我在一個環境中為 40 個固定安裝的終端(帶觸控屏,未連接滑鼠或鍵盤)提供服務。這 40 台 PC 都安裝了精簡版的 Ubuntu 和 Chromium,因為它們的唯一目的是在全螢幕模式下提供 Web 應用程式。
現在,問題來了:幾天前,我們停電了,所有終端都關閉了。當我再次重新啟動它們時,沒有一個觸控螢幕工作,我不知道為什麼。但是,使用 CloneZilla 快閃磁碟機重新安裝系統就解決了這個問題。這是一項繁重的工作——連接鍵盤和快閃磁碟機、更改 BIOS 設定以從隨身碟啟動、重新安裝所有 40 個終端。
如何以更好的方式做到這一點?我的夢想場景是部署一項變更(假設我希望每個終端上都有一個小型 NodeJs 伺服器,或配置 SSH 存取)。我考慮過運行 PXE 伺服器,但這顯然需要很多時間(800 MB 映像 x 40 需要相當長的時間來下載)。
對於如何以更好的方式維護此設置,有人有更好的解決方案嗎?
答案1
嗯,PXE 不一定是在每台伺服器啟動時將映像下載到它們的情況。事實上,它更傳統的用途(至少在處理 UNIX 系統時)是為根檔案系統位於 NFS(或現在可能是其他網路檔案系統)的系統提供無磁碟引導。我不太確定這對您來說有多有效(它用 PXE 的時間問題來換取 NFS 伺服器中的單點故障),但它可能值得一看。您也可以使用 iSCSI 或 NBD 執行類似的操作,儘管設定起來稍微複雜一些。
您還可以研究鍊式載入事物的可能性,類似於如何系統救援光碟做。當網路啟動時,它只需要透過 TFTP 載入 syslinux、核心和初始 ram 磁碟,然後可以透過其他協定載入實際的系統映像(例如,我工作的地方,我們透過 HTTP 載入)。 TFTP 是一種極其低效的協定(它要求在發送下一個區塊之前單獨確認每個區塊,並且預設使用非常小的區塊大小),因此這樣做可以顯著加快該過程(我們有我工作的網絡)設定為 netboot SystemRescueCD 並讓它通過 HTTP 而不是 TFTP 加載系統映像,這將啟動時間從近 15 分鐘縮短到了在我設定它時測試的系統上的大約 3 分鐘)。
鑑於您正在運行基於 Ubuntu 的系統,您可能會考慮使用以下組合MAAS和朱朱,因為這是使用 Ubuntu 執行此類操作的標準堆疊。
除此之外,如果您可以放心地假設像您所看到的那樣的大規模中斷很少見(因此您不太可能需要再次重新安裝所有40 個系統),那麼您可能會考慮使用自動化管理工具。它對安裝系統沒有幫助,但會大大簡化系統上的配置或套件的部署變更。我特別喜歡安西布爾對於這種類型的事情,很大程度上是因為它的設定非常簡單(你實際上只需要無密碼SSH 登入和在你想要管理的系統上安裝特定的python 套件)以及它使用有狀態(主要是)用於處理任務的聲明性語言非常容易學習。木偶,廚師, 和鹽是此類事物的其他三個流行選項,但除了粗略評估之外,我從未對它們有任何個人經驗,因此我無法真正就哪一個最適合您的使用提供任何建議。
答案2
我還建議使用無磁碟 PXE 啟動,但作為替代方案,您可以輕鬆備份一個系統,然後在這種情況下將其還原到所有 40 個系統。這比重新安裝 40 次要快。