ansible puppet saltstack三款自動化運維工具的對比

一、基礎介紹

ansible基礎介紹可參考:http://kaliarch.blog.51cto.com/8966921/1971185

puppet基礎介紹可參考:http://kaliarch.blog.51cto.com/8966921/1973736

saltstack基礎介紹可參考:http://kaliarch.blog.51cto.com/8966921/1975219

二、技術特性比較

名稱
Puppet
SaltStack
Ansible
開發語言RubyPythonPython
客戶端
二次開發不支持支持支持
通信驗證
加密方式標準SSL協議AES加密OpenSSH
平臺支持AIX,BSD,HP-UX,Linux,Mac OS X,Solaris,WindowsBSD,Linux,Mac OS X,Solaris,WindowsAIX,BSD,HP-UX,Linux,Mac OS X,Solaris
配置文件格式Ruby語法格式YAMLYAML
Web UI提供提供提供(商業版本)
命令執行不支持(配置模塊可實現)支持支持

三、優缺點對比

名稱
優勢
劣勢
成本
Puppet
  • 模塊由Ruby或Ruby子集編寫

  • push命令可以即可觸發變更

  • Web界面生成處理報表、資源清單、實時節點管理

  • 代理運行端進行詳細、深入的報告和對節點進行配置

  • 相對其他工具較複雜,需學習Puppet的DSL或Ruby

  • 安裝過程缺少錯誤校驗和產生錯誤報表

  • 開源軟件免費

  • SaltStack企業版每年內個節點花費約¥100

Saltstack
  • 狀態文件可用簡單YAML配置模塊或複雜的Python/PyDSL腳本

  • 與客戶端可以基於SSH或在被管節點安裝代理

  • Web界面可看到運行的工作、minion狀態、事件日誌、可在客戶端執行命令

  • 擴展能力極強

  • Web界面像毒藥競爭產品不穩定與相對不完善

  • 缺乏生成深度報告的能力

  • 開源軟件免費

  • SaltStack企業版每年內個節點花費約¥150,隨着數量增加相應的會有折扣

Ansible
  • 模塊可以用任何語言開發

  • 備管節點不需要安裝代理軟件

  • 有Web管理界面、可配置用戶、組、資源清單和執行Playbook

  • 安裝、運行極其簡單

  • 對備管理節點爲Windows有待加強

  • Web管理界面是內置的Ansible的一部分

  • 需導入資源清單

  • 執行效率較低

  • 開源版本免費

  • Ansible Tower小於10臺被管理節點免費

  • 超過10太后沒年每臺需支付¥100~$250的支持服務費用

四、推薦場景

4.1 Puppet

  Puppet也許是四款工具中最深入人心的。就可用操作、模塊和用戶界面而言,它是最全面的。Puppet呈現了數據中心協調的全貌,幾乎涵蓋每一個運行系統,爲各大操作系統提供了深入的工具。初始設置比較簡單,只需要在需要加以管理的每個系統上安裝主服務器和客戶端代理軟件。

  命令行接口(CLI)簡單直觀,允許通過puppet命令下載和安裝模塊。然後,需要對配置文件進行更改,好讓模塊適合所需的任務;應接到指令的客戶端與主服務器聯繫時,會更改配置文件,或者客戶端通過立即觸發更改配置文件的推送(push)來進行更改。

  還有一些模塊可以提供和配置雲服務器實例和虛擬服務器實例。所有模塊和配置都使用基於Ruby的Puppet專屬語言或者Ruby本身構建而成,因而除了系統管理技能外,還需要編程專業知識。

  Puppet企業版擁有最全面的Web用戶界面,允許使用主服務器上的預製模塊和菜譜(cookbook),實時控制被管理的節點。Web用戶界面很適合用於管理,但是不允許對模塊進行諸多配置。報告工具非常完善,提供了詳細信息,以便了解代理軟件運行如何、已做出什麼樣的變更。

4.2 Ansible

  Ansible極其類似Salt,而不太類似Puppet或Chef。Ansible關注的重點是力求精簡和快速,而且不需要在節點上安裝代理軟件。因此,Ansible通過SSH執行所有功能。Ansible基於Python;相比之下,Puppet和Chef基於Ruby。

  Ansible可以通過Git軟件庫克隆,安裝到Ansible主服務器上。安裝完畢後,需要管理的節點被添加到Ansible配置環境,SSH授權密鑰被附加到每個節點上,這與運行Ansible的用戶有關。一旦完成了這步,Ansible主服務器可以通過SSH與節點進行通信,執行所有必要的任務。爲了與默認情況下不允許根SSH訪問的操作系統或發行版協同運行,Ansible接受sudo登錄信息,以便在那些系統上以根用戶的身份運行命令。

  Ansible可以使用Paramiko(基於SSH2協議的Python實現)或標準SSH用於通信,不過還有一種加速模式,允許更快速、更大規模的通信。

  針對確保服務在運行,或者觸發更新和重新啓動之類的簡單任務,Ansible可以從命令行來運行,不需要使用配置文件。至於比較複雜的任務,Ansible配置通過名爲Playbook的配置文件中的YAML語法來加以處理。Playbook還可以使用模板來擴展其功能。

  Ansible有一大批模塊,可用於管理各種系統以及亞馬遜彈性計算雲(EC2)和OpenStack等雲計算基礎設施。可以用幾乎任何一種語言來編寫自定義Ansible模塊,只要模塊輸出是有效的JSON。

  Ansible的Web用戶界面以AnsibleWorks AWX的形式出現,但AWX與CLI並不直接聯繫在一起。這意味着,除非進行了同步過程,否則CLI裏面的配置元素不會出現在Web用戶界面中。你可以使用那個內置的同步工具,讓兩者保持一致,但需要按照預定計劃運行同步工具。

4.3 SaltStack

  Salt類似Ansible,因爲它也是基於CLI的工具,採用了推送方法實現客戶端通信。它可以通過Git或通過程序包管理系統安裝到主服務器和客戶端上。客戶端會向主服務器提出請求,請求在主服務器上得到接受後,就可以控制該客戶端了。

  Salt可以通過普通的SSH與客戶端進行通信,但如果使用名爲minion的客戶端代理軟件,可以大大增強可擴展性。此外,Salt含有一個異步文件服務器,可以爲客戶端加快文件服務速度,這完全是Salt注重高擴展性的一個體現。

  與Ansible一樣,你可以直接通過CLI,向客戶端發出命令,比如啓動服務或安裝程序包;你也可以使用名爲state的YAML配置文件,處理比較複雜的任務。還有“pillar”,這些是放在集中地方的數據集,YAML配置文件可以在運行期間訪問它們。

  你可以直接通過CLI,向客戶端請求配置信息,比如內核版本或網絡接口方面的詳細信息。只要使用名爲“grain”的庫存元素,就可以描述客戶端;這樣一來,管理員可以輕鬆向某一種類型的服務器發出命令,不需要依賴已配置羣組。比如說,只要使用一個CLI命令,你就可以向運行某個內核版本的每個客戶端發送命令。

  與Puppet、Chef和Ansible一樣,Salt也提供了大量的模塊,以處理特定的軟件、操作系統和雲服務。自定義模塊可以用Python或PyDSL來編寫。除了Unix管理外,Salt的確提供Windows管理功能,但它還是更擅長管理Unix和Linux系統。

  Salt的Web用戶界面Halite非常新,功能不如其他系統的Web用戶界面來得全面。它提供了事件日誌和客戶端狀態的視圖,能夠在客戶端上運行命令,但除此之外乏善可陳。

  Salt的較大優點在於可擴展性和彈性。你可以有多個級別的主服務器。上游主服務器可以控制下游主服務器及其客戶端。另一個優點在於對等系統,讓客戶端可以向主服務器提出問題,然後主服務器從其他服務器得到答案,提供全面信息。如果需要在實時數據庫中查詢數據,以便完成客戶端的配置,這個優點就很方便。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章