saltstack詳解


saltstack介紹:

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

一. 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:列出多個變量

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM