
除了我們的內部 IT 基礎架構之外,我們還有大約 500 台 Linux 機器來託管我們的線上服務。它們被分組為一組集群,例如資料庫 An、產品 An、NFS、Backoffice 等。此外,它們由外部提供者根據我們的規範和要求進行管理。
然而,我們在(網絡)軟體開發、推出和部署過程中遇到了很多麻煩 - 特別是因為開發環境和登台環境與實時系統幾乎沒有任何共同點(我省略了令人討厭的細節..) 。
因此,我嘗試建立虛擬機,盡可能準確地複製各種即時系統,並準備將它們連接到例如開發資料庫,而不是對開發人員透明的「真實」資料庫(它們不是root
)。這工作得很好,但是......
我想知道如何遠端管理這些系統散裝?是否有一些我不知道的軟體系列?或者,至少應該熟悉一些技術或原則?
我們將為每位開發人員提供一堆在本地運行的映像(VirtualBox)。品質保證部門將獲得虛擬叢集(XEN 或 Hyper-V)。如果我需要提供額外的伺服器模組,重新路由新的資料庫連接或只是想更新套件管理器提供的所有內容...我怎麼能做到這一點而不被迫登入每個系統和/或讓我的同事下載並執行一些固定腳本?
我相信有很多解決方案。好吧,不知怎的,我太愚蠢了,無法在搜尋引擎中輸入正確的關鍵字......或者這個問題不像聽起來那麼微不足道?
作為記錄:
- 幾乎所有系統都運行 Debian GNU/Linux 6.x “squeeze”
- 沒有開發人員被迫在他/她的工作站上使用特定作業系統
- 當然,預算是有限的,但不能太小而無法購買專有軟體
- 首選涉及我們上述提供者的解決方案
答案1
這取決於您到底需要什麼以及您正在尋找什麼。但總的來說,存在多種解決方案“配置管理喜歡:
我個人會推薦 puppet,因為它有一個很大的社區和很多外部提供的食譜。這允許您自動配置和管理系統。如果您將其與自己的儲存庫和自動更新結合起來,例如unattended-upgrades
您可以自動更新系統。
另一種解決方案是提供您自己的軟體包等,company-base
它自動依賴必要的軟體並可以自動配置您的系統。
您還應該研究自動化部署(準系統和虛擬化)。如果您將其與組態管理或您自己的儲存庫結合起來,您可以輕鬆地自動化和重新安裝系統。如果您想開始自動安裝,請查看福曼它支援 libvirt 以及裸機安裝,並整合了 puppet 支援。如果你想自己做,你可以看看啟動 (redhat 等)或「預置」來自動設定您的系統。對於 Debian,你還可以使用類似的東西反引導程式或名為的包裝器grml-debootstrap支援虛擬化影像。
為了幫助為您的開發人員提供 VirtualBox 映像,請查看流浪漢它允許您使用 VirtualBox 自動建立虛擬化系統,支援 Chef、Puppet 和 shell 腳本來自訂您的虛擬環境。
如果您想使用現有提供者的解決方案,您應該詢問他們如何管理您的系統,但這可能是某種配置管理。如果您可以存取配置伺服器,則可以在您的系統上運行他們的代理程式。
對於谷歌關鍵字,請查看devops
、configuration management
和。it automation
server orchestration
簡而言之,盡可能自動化,甚至不要考慮手動完成工作。
答案2
Ulrich 已經給出了有關軟體部署和自動化伺服器設定的答案。
這背後的原則是
- 定義您的伺服器的外觀 - 這包括預設安裝的常用軟體、分區方案和檔案系統佈局
- 生產、登台、測試和開發伺服器在這些基本標準方面不應有所不同(否則您稍後會遇到問題 - 正如您所做的那樣)
- 使用適當的變更管理來記錄您所做的所有變更(包括任何配置中微小的一行變更)
- 始終首先在測試中進行更改,然後在開發中更改,然後在登台中更改,最後在生產中更改
您需要一個方便的工具來管理大量伺服器 - 我個人最喜歡的是 cluster-ssh ( cssh
)。輸入一次並同時在許多伺服器上進行更改。
如果您發現問題並採取修復措施來消除該問題:
- 如果修復確實有效,則將修復應用於測試/開發/暫存/生產(見上文)
- 將修復套用到您的虛擬模板,以便將來的虛擬機器克隆不會出現該錯誤
- 將修復套用到您的實體安裝過程(kickstart/autoyast/其他)
- 將修復應用到所有伺服器
如果您面對大量伺服器進行修復,則必須對此流程進行詳細記錄,最後由不同的團隊檢查修復是否已完全套用。
為此,我們採用 Mantis(開源,PHP)。
答案3
我管理著多個國家的大約 30 個產品和數百台伺服器。我是軟體設定經理,所以我沒有 root 存取權限(根據設計),不接觸資料庫或其伺服器(同樣,根據設計),並且由於公司安全而不得不跳過很多環節。但我確實管理測試、登台和生產中的配置,包括資料庫連結和變更。我有許多腳本,它們使用ssh
、python
和 shell 腳本的組合發送到伺服器。
要考慮的主要事情是:
- 您將與伺服器進行哪些類型的互動?只是文件上傳嗎?運行命令列程序?運行遠端 X 客戶端?
- 存取這些伺服器需要什麼等級的安全性?防火牆、安全網路、VPN?是否
ssh
足夠且位於中央安全位置? - 每台伺服器上可以實現多少自動化?您可以在每台伺服器上安裝一個程式並運行它,還是需要透過諸如
ssh
遠端運行之類的方式串流該程式?您可以使用腳本編寫它expect
還是僅使用命令列呼叫?
VirtualBox 提供了許多命令列工具,您可以透過Ulrich 提到的系統ssh
或系統來管理它們。puppet
答案4
在過去的幾年中,出現了一組新的極簡系統,它們專注於使用腳本建立配置的能力。因為它們是編寫腳本的框架,所以它們往往擅長於需要排序的任務。
皮因弗拉
pyinfra 可以超快速地大規模自動化基礎設施。它可用於臨時命令執行、服務部署、設定管理等
柔道
簡單的編排與設定管理
http://github.com/rollcat/judo
復位(1):PLN(5)
使用任何腳本語言設定係統