如何使用虛擬化/LAMP(小型 IaC)自動化伺服器安裝?

如何使用虛擬化/LAMP(小型 IaC)自動化伺服器安裝?

如何自動化安裝伺服器?哪些基礎設施/系統適合我們的需求?

我們有 10 多台實體伺服器,擁有 100 多台虛擬機,其中大部分是 LAMP。不是太多,但也沒有任何可以自行繼續工作的東西。所有伺服器都有 KVM 虛擬化。我們為客戶託管各種經常修改的客製化應用程式。所以這不是一個需要擴展的單一應用程式。專案團隊直接與客戶和虛擬機器合作,這是一項要求。

我們經常遇到的問題是,重新安裝虛擬機器/機器變得很棘手,因為沒有人控制最近對它們的更改,這會帶來不穩定的風險,人們會盡可能推遲它,並且隨著時間的推移,問題會變得越來越大。

我想至少每 3 個月按需建立一次重新安裝程序。重新安裝應從程式碼儲存庫和備份開始。這不應該是虛擬機器重複。

我們估計,在目前設定中,如果手工完成,每 3 個月將花費約 6 個人月的時間。我們如何才能減少這個時間並提高該過程的可重複性?

問題是什麼軟體可以幫助我們自動完成這項任務。它應該盡可能輕。我們不需要自動節點分配。我們只需要重新安裝盡可能自動化。我們假設每次重新安裝都會受到人工監督。

我們的節點主要是 LAMP,有兩個系統擁有超過 1TB 的結構化資料庫數據,幾個 >200GB 和大約 50 個小型客製化虛擬機器。我們可以輕鬆地安排每個系統的計劃停機時間,因此這不是重裝期間的高可用性問題。

我們只需要盡可能自動化重新安裝。

答案1

您需要一個設定管理框架,例如 Ansible、Saltstack、Puppet 或 Chef。

這是用於管理和應用配置的工具。然而,選擇實際的工具只是該項目的一小部分。

您需要設計和部署流程,其中基礎架構的所有變更都透過此工具進行管理。

這需要:

  • 培訓人們使用該工具
  • 改變系統架構,如果沒有工具就無法進行更改
  • 因應改變人們基本運作模式的阻力

您還應該考慮統一軟體堆疊基礎架構。

如果每個虛擬機器的軟體配置略有不同,您將有

  • 不同安裝的組態管理程式碼中有很多重複的程式碼
  • 選擇如何應用哪種配置的複雜邏輯

這些因素中的任何一個都會增加大量的維護開銷,最終結果可能會變得像您當前的情況一樣痛苦。

答案2

您的雲端有 API 金鑰嗎?

大多數雲都有一鍵式 LAMP 影像,例如

烏爾特爾:https://www.vultr.com/apps/lamp/

數位海洋:https://marketplace.digitalocean.com/apps/lamp

易諾德:https://www.linode.com/docs/guides/lamp-stack-marketplace-app/

如果沒有,我的絕對首選是 VestaCPhttps://vestacp.com/install/

https://hestiacp.com/

兩者都增加了 apache 後端、nginx 前端、MySQL/mariadb/postgres 和 php/php-fpm。也是所有可選的。

對於更新,我將建立一個單獨的伺服器,在該單獨的伺服器中放置一個通用的 SSH 公鑰/root/.ssh/authorized_keys,該金鑰可以自動登入每個伺服器,如下所示:

INSTANCES=(
10.0.0.5
10.0.0.6
10.0.0.7
...
)


for INSTANCE in "${INSTANCES[@]}"; do
    ssh root@${INSTANCE} /bin/bash -c "apt update -y && apt upgrade -y"
done

這幾乎是 Terraform、Kubernetes 等 DIY。

另外,在 GitHub 上,還有大量特定於雲端的指南,例如:

另一種數位海洋:https://github.com/ethanbeyer/DigitalOcean-Droplet-Setup

AWS 之一:https://github.com/elionaz/aws-LAMP/blob/master/install_lamp.sh

相關內容