十大軟體配置管理工具
DevOps 在短短幾年內已從一個小眾運動轉變為任何 IT 高管的必需品。關於 DevOps 的討論很多,但也有很多有用的資訊。這些至關重要但又敏感的任務——配置環境、安裝應用程式和管理基礎設施——通常都是手動執行的。如果我們可以自動化所有這些,節省數小時的工作量並消除人為錯誤的可能性,那該怎麼辦呢?
為了幫助您選擇最適合您的配置管理工具(並能夠為不選擇 X、Y 和 Z 等選項的決定進行辯護),我們簡化了快速檢視每個工具並將其與替代方案進行比較的方法。
配置管理的目的是什麼?
配置管理軟體允許使用久經考驗的軟體開發流程來即時管理和配置資料中心,使用未加密的規範檔案。有些人將 CM 解決方案稱為“DevOps 一體機”,但這並不準確。儘管 CM 技術僅僅是——用於自動化配置狀態應用的工具——但 DevOps 是關於人類合作的。它們旨在以特定方式解決特定問題,就像任何其他工具一樣。根據使用者的知識和技能,它們可以更有效或更無效地使用。
風險與回報
自動化基礎設施配置狀態更改的優勢在於您可以快速進行更改,但其他人或其他事物必須驗證這些更改。在決定配置管理解決方案之前,請評估您將採用哪些補充工具來最大限度地減少在基礎設施即程式碼中自動化部署缺陷的代價高昂的影響。此外,版本控制和文字友好性是軟體配置管理 (SCM) 技術的特性。我們可以修改程式碼並將其提交為合併請求以供審查。
許多特定於作業系統的配置實現都由配置管理工具為您抽象化。例如,在 Red Hat 和 Ubuntu 系統上,可以使用相同的配置檔案管理 Apache HTTPD 的安裝。
配置不當是一個巨大的網路安全風險,可能導致資料洩露和其他網路攻擊。在自動化基礎設施配置時,必須考慮網路安全、資訊安全和資訊風險管理。
十大軟體配置管理工具
以下是十大軟體配置管理工具:
1. CFEngine
CFEngine 是一款較舊的開源配置管理應用程式,它能夠為大型計算機系統實現自動化配置,包括伺服器、系統、使用者、嵌入式網路裝置、移動裝置和其他裝置的統一管理。
2. Puppet
Puppet 每年的“DevOps 狀態”報告是 DevOps 趨勢的重要來源之一。對於從事運營工作的人員來說,瞭解 Puppet 平臺的優缺點正變得越來越重要。Puppet 使用宣告式程式語言或 Ruby 來指定系統配置。它被劃分為模組,清單檔案提供所需狀態目標以維護所有內容的必要狀態。
Puppet 的開源版本是免費的,而 Puppet Enterprise 對於最多 10 個節點是免費的。安裝 Puppet 後,基礎設施中的每個節點(物理伺服器、裝置或虛擬機器)都將安裝 Puppet 代理。
3. Chef
Chef 與 Puppet 一樣,是 CM 和自動化平臺行業的主要巨頭。它負責位於本地、雲端或混合環境中的伺服器。如果您是雲無關的,則在切換雲提供商時,您可以同時管理資料中心和雲環境。
4. Ansible
Ansible 比 Chef 或 Puppet 更新,是最佳的開源配置管理、部署、編排和自動化引擎。Fedora 和其他著名的 Linux 發行版都包含它。它有助於自動化 IT 基礎設施,從而為軟體配置、配置管理和應用程式部署帶來顯著的生產力改進。
Ansible 是我們最喜歡的工具之一。您可以使用 Ansible 從命令列在多臺伺服器上執行相同的命令。它還可以用於使用 YAML 編寫的劇本自動化操作(例如新增使用者、安裝包和更改伺服器配置),從而使技術團隊和非技術團隊能夠更有效地溝通。程式設計師和非程式設計師都會發現 Ansible 簡單、無代理且易於閱讀。
沒有代理意味著減少了伺服器上的負載。推送模式(預設模式)需要 SSH 連線,但是,在必要時可以使用拉取模式。可以使用少量命令編寫劇本,也可以使用更復雜的自動化任務(包括角色、變數和模組)對其進行擴充套件。
5. SaltStack
SaltStack 是“基礎設施即程式碼”理念的主要倡導者,儘管它進入市場的時間相對較晚,但由於它與 Google Cloud、Amazon Web Services (AWS) 等雲提供商的眾多整合,它已經積累了大量的追隨者。
“與 Ansible 類似,Salt 是用 Python 編寫的。它也是針對對 Puppet/Chef 的壟斷的抱怨而建立的,特別是它們繁瑣的部署過程和對 Ruby 的需求。雖然 Salt 支援 Python,但它也要求所有 CLI 命令都用 Python 或稱為 PyDSL 的唯一 DSL 編寫。這使得 Salt 在 Puppet 和 Ansible 之間處於中間位置。它使用主伺服器和稱為子節點的分散式代理來指揮和與目標伺服器互動,但是這是在傳輸層使用 ZeroMq 訊息庫完成的,這使得它比 Puppet/Chef 快得多。”
6. TeamCity 配置工具
Jet Brains 的 TeamCity 是另一個基於 Java 程式語言構建的管理和持續整合伺服器。
7. Docker
Docker 是一款相對較新的工具,自 2013 年推出以來,它席捲了 DevOps 和軟體開發領域。Docker 輕量級的容器化技術是其成功的秘訣:
“他們的方法透過在一個容器中部署軟體應用程式及其所有必需元件,確保軟體程式可以在任何 Linux 伺服器上執行,而與設定和/或設定無關。可以建立、定製和儲存容器作為模板,用於在執行 Docker 引擎的其他主機上使用。然後可以使用相同的作業系統、設定和二進位制檔案使用這些模板生成更多容器。”
8. 使用 PowerShell DSC
微軟的 CM 解決方案 PowerShell DSC 不輸於開源解決方案。
“DSC 是一個新的 Windows PowerShell 管理平臺,它使得能夠部署和管理軟體服務的配置資訊以及它們執行的環境。
DSC 包含一組 Windows PowerShell 語言擴充套件、新的 Windows PowerShell cmdlet 和資源,您可以使用它們以宣告方式指示軟體環境應如何配置。此外,它提供了一種監視和維護當前設定的方法。”
9. Rudder
Rudder 是一款開源 IT 基礎設施管理應用程式,執行在 CFEngine 之上。Rudder 的特殊資產管理功能可以識別節點及其屬性,這在執行配置管理操作時可能很有用。此 CMT 使用資產管理來識別配置管理節點。
Rudder 依賴於一個小型本地代理,該代理下載並安裝在每臺受監控的機器上。Scala 用於建立 Rudder 的伺服器端 Web 介面,而 C 用於建立本地代理。
10. JUJU 配置工具
JUJU 是一款開源程式,主要關注減少較新技術的運營開銷。JUJU 提供諸如擴充套件、整合、定製等功能。JUJU 沒有提供有關如何使用 OpenStack 雲服務的具體說明。
結論
總之,DevOps 已成為 IT 高管的必需品,因為它能夠自動化敏感和關鍵任務,節省時間並消除人為錯誤的可能性。配置管理是 DevOps 的重要組成部分,因為它允許快速應用配置狀態更改,從而更輕鬆地實施更改。雖然有許多可用的配置管理工具,例如 CFEngine、Puppet、Chef、Ansible、SaltStack 和 Docker,但必須評估每個工具的補充工具,以最大限度地減少在基礎設施即程式碼中自動化部署缺陷的代價高昂的影響。此外,在自動化基礎設施配置時,務必解決網路安全、資訊安全和資訊風險管理問題。DevOps 是關於人類協作的,配置管理技術可以根據使用者的知識和技能而更有效或更無效地使用。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP