運維自動化之ansible saltstack使用對比分析
我為什麼選擇Saltstack,考慮方式很簡單,主要基於如下兩個方面:
第一、語言的選擇(puppet/chef vs ansible/saltstack)
開源技術,不看官網不足以熟練,不懂原始碼不足以精通
Puppet、Chef基於Ruby開發,ansible、saltstack基於python開發的
本人熱衷於python(後期可做二次開發),排除Puppet、Chef
第二、速度的選擇 (ansible vs saltstack)
管理配置講究的是更快更穩
ansible基於SSH協議傳輸資料,Saltstack使用訊息佇列zeroMQ傳輸資料
測試SSH和MQ傳輸速度:
例:分別使用兩種工具測試1000臺伺服器的連通性,結果對比:
<img data-rawheight="153" data-rawwidth="321" src="https://pic1.zhimg.com/ac7a953dd1698d6449296c43a2e24fac_b.jpg" class="content_image" width="321">可以看出使用MQ通訊和SSH通訊,速度相差大約40倍可以看出使用MQ通訊和SSH通訊,速度相差大約40倍
顯然,從速度的角度,排除ansible,最終選擇了Saltstack。
在python系列的ansible、Saltstack的選擇中,有人放棄Saltstack的主要原因是Saltstack需要安裝客戶端,在伺服器有一定數量的情況下比較麻煩,而ansible不需要安裝客戶端。我個人認為這個考慮是多餘的,Saltstack中的Salt-ssh可以輕易解決這個問題(後面會寫篇使用salt-ssh批量部署客戶端的部落格),而且ansible也並非是不需要在“客戶端”做任何操作。例如,1.“客戶端”系統python版本需要滿足2.6+,否則需要進行升級;2.ansible使用一些功能也需要“客戶端”有對應模組(主要是python模組,即使python版本滿足2.6+,也需要額外安裝)