saltstack詳解

saltstack介紹:python

saltstack是基於python開發的一套C/S自動化運維工具,通訊採用了zeromq消息隊列的(pub/sub),數據傳輸採用了AES(高級加密)保證安全性,認證採用了SSL方式。centos

一. ZeroMQ介紹:安全

ZeroMQ是由一套組件組成,內封裝的有網絡通訊,消息隊列,線程調度等功能並向上層提供了簡潔的API接口,應用程序經過加載庫文件,調用API函數來實現高性能網絡通訊。網絡

ZeroMQ將網絡通訊分紅4種模型,分別是一對一結對模型(Exclusive-Pair)、請求迴應模型(Request-Reply)、發佈訂閱模型(Publish-Subscribe)、推拉模型(Push-Pull)。這4種模型總結出了通用的網絡通訊模型,在實際中能夠根據應用須要,組合其中的2種或多種模型來造成本身的解決方案。運維

saltstack-master與minion通訊就採用了zeromq的請求迴應模型(request-reply)和發佈訂閱模型(publish-subscribe):函數

1. 請求迴應模型工具

由請求端發起請求,而後等待迴應端應答。一個請求必須對應一個迴應,從請求端的角度來看是發-收配對,從迴應端的角度是收-發對。跟一對一結對模型的區別在於請求端能夠是1~N個。該模型主要用於遠程調用及任務分配等。Echo服務就是這種經典模型的應用。性能

 

2.  發佈訂閱模型測試

         發佈端單向分發數據,且不關心是否把所有信息發送給訂閱端。若是發佈端開始發佈信息時,訂閱端還沒有鏈接上來,則這些信息會被直接丟棄。訂閱端未鏈接致使信息丟失的問題,能夠經過與請求迴應模型組合來解決。訂閱端只負責接收,而不能反饋,且在訂閱端消費速度慢於發佈端的狀況下,會在訂閱端堆積數據。該模型主要用於數據分發。天氣預報、微博明星粉絲能夠應用這種經典模型。加密

salt-master啓動時會運行兩個端口4505和4506:

4505:他是salt的消息發佈,系統底層基於zeromq pub(發佈訂閱),能夠在master的配置文件中publish_port修改參數。

做用:負責下發命令,而且全部的minion都會鏈接到4505這個端口,可經過lsof -i:4505命令查看,注:可在minion的配置文件修改master參數指定主master。

4506:他是salt消息收集,系統底層基於zeromq REQ/REP(請求迴應模型),在master配置文件中ret_port修改參數。

做用:負責接收客戶端發送過來的結果。

 

二. master與minion的認證:

minion在第一次啓動時會在/etc/salt/下生成/pki/minion目錄,並在下面建立minion.pem(私鑰)和minion.pub(公鑰),而後主動將minion.pub發送到master的/etc/salt/pki/master/minions.pre/下面,而且文件以minion的id文件內的數據命名,等待認證。在master上執行salt-key -L命令能夠查看等待簽證的minion。執行salt-key -A -y命令贊成全部沒有簽證的minion。這時minion會在/etc/salt/pki/minion/下生成minion_master.pub文件,注這個是master的公鑰文件。而且master會將/pki/master/minions.pre目錄下的公鑰轉移到/pki/master/minions/目錄下表示已經認證,這時master就能夠管理minion了。

 

三. saltstack數據系統(grains和pillar):

grains是靜態數據在minion啓動時會收集一些本地的屬性信息例如:(CPU,內存,系統,版本,ip,mac,硬盤,設備型號)等等,並向master提交。注:重啓便會從新收集。

1.基本數據查看與獲取:

salt ‘zcl*’  grains.items:列出ID以zcl開頭的minion,並顯示全部的grains靜態變量與值。

salt ‘zcl*’ grains.ls:列出ID以zcl開頭的minion,並顯示全部的grains靜態變量名。

salt ‘zcl*’ grains.items os:顯示某一個變量與值

salt ‘zcl*’ grains.get os:直接獲取某一個變量的值

2.根據目標屬性條件進行使用命令:

salt -G ‘os:CentOS’ test.ping:全部minion主機爲centos系統的進行ping測試。

salt -G ‘os:CentOS’ cmd.run ‘date’:全部minion主機爲centos系統的執行date命令

3.自定義靜態變量:

第一種:

vi /etc/salt/minion

重啓或者使用salt ‘*’ saltutil.sync_grains命令可不重啓。

第二種:   通常生產環境都用第二種。

vi /etc/salt/grains

salt ‘*’ saltutil.sync_grains

salt '*' grains.get zcl

salt '*' grains.item zcl roles:列出多個變量

相關文章
相關標籤/搜索