Linux

您如何將版本控制、測試和持續集成/部署等開發實踐應用於系統管理?

  • March 16, 2018

想像一下,您要管理許多伺服器,這些伺服器具有許多人使用的許多不同服務。現在假設您要重新配置或替換其中一台伺服器上的某些軟體。顯然,您不想在生產中的伺服器上工作。

如果這是程式碼更改,作為開發人員,我會在本地開發機器上進行更改,在本地進行測試並將更改送出到版本控制系統。然後可以將更改部署在暫存環境中,進一步測試並最終部署在生產環境中。如有必要,我也很容易回滾。

一般來說,或者俱體來說,您如何在系統管理中實現這一點?

(首先想到的是使用虛擬機並將虛擬機映像放入版本控制中,但我確信有很多我目前不知道的文獻和聰明的解決方案。)

簡短的回答是“作業系統部署管理”、“配置管理”和“軟體打包”。長答案如下。

我想在 Daniel Pittman 的回復中添加對系統管理中“系統”構成的細分。

系統或環境將包括:

  • 伺服器
  • 作業系統
  • 配置
  • 供應商套餐;和
  • 本地套餐

封裝這些將是過程,例如:

  • 作業系統部署或映像
  • 配置管理
  • 軟體包管理
  • 審計/記錄
  • 監控
  • 備份

您希望將這些結合在一起以幫助您實現非功能性目標,例如:

  • 重複性
  • 可維護性
  • 可測量性
  • 表現
  • 可追踪性
  • 可測試性
  • 可變性

這是一個快速的大腦轉儲。我確信可以將更多內容添加到所有列表中。

您的問題涉及其中的一些,但沒有使用特定的詞語。例如,您希望能夠輕鬆部署並恢復,即希望可維護性;你想在測試環境中做它並測試直到它通過,即可重複性、可測試性和可測量性;您正在考慮將 vm 映像置於版本控制中,因為您希望作業系統和配置部署的可重複性。

有很多工具可以幫助您解決這個問題,其中一些是 Daniel 提到的。其他一些是:

  • 用於部署已知作業系統環境的 Kickstarts(基於 RedHat)、Preseed(基於 Debian)、WDS(MS Windows)
  • Spacewalk/Satellite(基於 RedHat)、用於配置和包管理的組策略 (MS Windows)
  • YUM 和 APT 打包系統,用於生成、部署、升級和刪除包(包含一個軟體的二進製文件、數據和配置集)
  • 用於監控的 Nagios、OpenNMS 和 SCOM
  • 用於備份的 Amanda、Bacula 和 Windows 備份伺服器
  • 用於性能監控的 Munin、PCP 和 Hyperic
  • 用於版本控制的 CVS、SVN、GIT 或 Bazaar
  • Hudson 和 Jenkins 用於建構管理
  • 用於測試的 Selenium 和 Robot
  • 用於記錄、通信和跟踪的 Bugzilla、Request Tracker 和 Jira

同樣,這不是一個完整的列表,而是我腦海中的一些東西來指導我,希望它也能幫助你。

引用自:https://serverfault.com/questions/392473