Linux 批次/遠端管理

Linux 批次/遠端管理

除了我們的內部 IT 基礎架構之外,我們還有大約 500 台 Linux 機器來託管我們的線上服務。它們被分組為一組集群,例如資料庫 An、產品 An、NFS、Backoffice 等。此外,它們由外部提供者根據我們的規範和要求進行管理。

然而,我們在(網絡)軟體開發、推出和部署過程中遇到了很多麻煩 - 特別是因為開發環境和登台環境與實時系統幾乎沒有任何共同點(我省略了令人討厭的細節..) 。

因此,我嘗試建立虛擬機,盡可能準確地複製各種即時系統,並準備將它們連接到例如開發資料庫,而不是對開發人員透明的「真實」資料庫(它們不是root)。這工作得很好,但是......

我想知道如何遠端管理這些系統散裝?是否有一些我不知道的軟體系列?或者,至少應該熟悉一些技術或原則?

我們將為每位開發人員提供一堆在本地運行的映像(VirtualBox)。品質保證部門將獲得虛擬叢集(XEN 或 Hyper-V)。如果我需要提供額外的伺服器模組,重新路由新的資料庫連接或只是想更新套件管理器提供的所有內容...我怎麼能做到這一點而不被迫登入每個系統和/或讓我的同事下載並執行一些固定腳本?

我相信有很多解決方案。好吧,不知怎的,我太愚蠢了,無法在搜尋引擎中輸入正確的關鍵字......或者這個問題不像聽起來那麼微不足道?

作為記錄:

  • 幾乎所有系統都運行 Debian GNU/Linux 6.x “squeeze”
  • 沒有開發人員被迫在他/她的工作站上使用特定作業系統
  • 當然,預算是有限的,但不能太小而無法購買專有軟體
  • 首選涉及我們上述提供者的解決方案

答案1

這取決於您到底需要什麼以及您正在尋找什麼。但總的來說,存在多種解決方案“配置管理喜歡:

  1. 木偶
  2. 廚師
  3. cf引擎
  4. 安西布爾

我個人會推薦 puppet,因為它有一個很大的社區和很多外部提供的食譜。這允許您自動配置和管理系統。如果您將其與自己的儲存庫和自動更新結合起來,例如unattended-upgrades您可以自動更新系統。

另一種解決方案是提供您自己的軟體包等,company-base它自動依賴必要的軟體並可以自動配置您的系統。

您還應該研究自動化部署(準系統和虛擬化)。如果您將其與組態管理或您自己的儲存庫結合起來,您可以輕鬆地自動化和重新安裝系統。如果您想開始自動安裝,請查看福曼它支援 libvirt 以及裸機安裝,並整合了 puppet 支援。如果你想自己做,你可以看看啟動 (redhat 等)或「預置」來自動設定您的系統。對於 Debian,你還可以使用類似的東西反引導程式或名為的包裝器grml-debootstrap支援虛擬化影像。

為了幫助為您的開發人員提供 VirtualBox 映像,請查看流浪漢它允許您使用 VirtualBox 自動建立虛擬化系統,支援 Chef、Puppet 和 shell 腳本來自訂您的虛擬環境。

如果您想使用現有提供者的解決方案,您應該詢問他們如何管理您的系統,但這可能是某種配置管理。如果您可以存取配置伺服器,則可以在您的系統上運行他們的代理程式。

對於谷歌關鍵字,請查看devopsconfiguration management和。it automationserver orchestration

簡而言之,盡可能自動化,甚至不要考慮手動完成工作。

答案2

Ulrich 已經給出了有關軟體部署和自動化伺服器設定的答案。

這背後的原則是

  • 定義您的伺服器的外觀 - 這包括預設安裝的常用軟體、分區方案和檔案系統佈局
  • 生產、登台、測試和開發伺服器在這些基本標準方面不應有所不同(否則您稍後會遇到問題 - 正如您所做的那樣)
  • 使用適當的變更管理來記錄您所做的所有變更(包括任何配置中微小的一行變更)
  • 始終首先在測試中進行更改,然後在開發中更改,然後在登台中更改,最後在生產中更改

您需要一個方便的工具來管理大量伺服器 - 我個人最喜歡的是 cluster-ssh ( cssh)。輸入一次並同時在許多伺服器上進行更改。

如果您發現問題並採取修復措施來消除該問題:

  1. 如果修復確實有效,則將修復應用於測試/開發/暫存/生產(見上文)
  2. 將修復套用到您的虛擬模板,以便將來的虛擬機器克隆不會出現該錯誤
  3. 將修復套用到您的實體安裝過程(kickstart/autoyast/其他)
  4. 將修復應用到所有伺服器

如果您面對大量伺服器進行修復,則必須對此流程進行詳細記錄,最後由不同的團隊檢查修復是否已完全套用。

為此,我們採用 Mantis(開源,PHP)。

答案3

我管理著多個國家的大約 30 個產品和數百台伺服器。我是軟體設定經理,所以我沒有 root 存取權限(根據設計),不接觸資料庫或其伺服器(同樣,根據設計),並且由於公司安全而不得不跳過很多環節。但我確實管理測試、登台和生產中的配置,包括資料庫連結和變更。我有許多腳本,它們使用sshpython和 shell 腳本的組合發送到伺服器。

要考慮的主要事情是:

  1. 您將與伺服器進行哪些類型的互動?只是文件上傳嗎?運行命令列程序?運行遠端 X 客戶端?
  2. 存取這些伺服器需要什麼等級的安全性?防火牆、安全網路、VPN?是否ssh足夠且位於中央安全位置?
  3. 每台伺服器上可以實現多少自動化?您可以在每台伺服器上安裝一個程式並運行它,還是需要透過諸如ssh遠端運行之類的方式串流該程式?您可以使用腳本編寫它expect還是僅使用命令列呼叫?

VirtualBox 提供了許多命令列工具,您可以透過Ulrich 提到的系統ssh或系統來管理它們。puppet

答案4

在過去的幾年中,出現了一組新的極簡系統,它們專注於使用腳本建立配置的能力。因為它們是編寫腳本的框架,所以它們往往擅長於需要排序的任務。

皮因弗拉

pyinfra 可以超快速地大規模自動化基礎設施。它可用於臨時命令執行、服務部署、設定管理等

http://pyinfra.com/

柔道

簡單的編排與設定管理

http://github.com/rollcat/judo

復位(1):PLN(5)

使用任何腳本語言設定係統

http://scriptedconfiguration.org/

相關內容