1、基礎介紹linux
ansible基礎介紹可參考:http://www.linuxidc.com/Linux/2017-12/149671.htm數據庫
puppet基礎介紹可參考:http://www.linuxidc.com/Linux/2017-12/149672.htm編程
saltstack基礎介紹可參考:http://www.linuxidc.com/Linux/2017-12/149675.htm服務器
2、技術特性比較網絡
名稱 |
Puppet |
SaltStack |
Ansible |
開發語言 | Ruby | Python | Python |
客戶端 | 有 | 有 | 無 |
二次開發 | 不支持 | 支持 | 支持 |
通訊驗證 | 是 | 是 | 是 |
同窗加密 | 標準SSL協議 | AES加密 | OpenSSH |
平臺支持 | AIX,BSD,HP-UX,Linux,Mac OS X,Solaris,Windows | BSD,Linux,Mac OS X,Solaris,Windows | AIX,BSD,HP-UX,Linux,Mac OS X,Solaris |
配置文件格式 | Ruby語法格式 | YAML | YAML |
Web UI | 提供 | 提供 | 提供(商業版本) |
命令執行 | 不支持(配置模塊可實現) | 支持 | 支持 |
3、優缺點對比異步
名稱 |
優點 |
劣勢 |
成本 |
Puppet |
|
|
|
Saltstack |
|
|
|
Ansible |
|
|
|
4、推薦場景
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的較大優勢在於可擴展性和彈性。你能夠有多個級別的主服務器。上游主服務器能夠控制下游主服務器及其客戶端。另外一個優勢在於對等系統,讓客戶端能夠向主服務器提出問題,而後主服務器從其餘服務器獲得答案,提供全面信息。若是須要在實時數據庫中查詢數據,以便完成客戶端的配置,這個優勢就很方便。