salt的核心功能:
使命令傳送到遠端系統是並行的而不是序列的
使用安全加密的協議
使用最小最快的網路載荷
提供簡單的程式設計介面
salt同樣引入了更加細緻化的領域控制系統來遠端執行,使得系統成為目標不止可以通過主機名,還可以通過系統屬性。
saltstack 的通訊架構模型
salt 採用服務端-**的通訊模型(也可以通過 ssh 方式實現非**模式)。服務端稱為 salt master,**端稱為 salt minion。
salt master 負責傳送命令予 salt minion,隨後收集並展示這些命令的執行結果。一台 salt master 可以管理幾千臺的系統。
saltstack通訊機制
saltstack 採用 c/s模式,minion與master之間通過zeromq訊息佇列通訊,預設監聽4505埠。
salt master執行的第二個網路服務就是zeromq rep系統,預設監聽4506埠。
salt minion 驗證機制
(1) 當 minion 啟動時,其將搜尋網路中的 master。當找到時, minion 將傳送公鑰給 salt master,從而實現初次握手。其過程如下圖所示。
(2) 當初次握手後,salt minion 的公鑰將被儲存在服務端,此時 master 需要使用過 salt-key 命令接收公鑰(也可以採用自動機制)。注意:在 salt minion 的公鑰被接收前,salt master 是不會將金鑰發放給 minion 的,也就是說 minion 在此之前不會執行任何命令。
(3) 當 salt minion 的公鑰被接收後,salt master 就會把公鑰連同用於加解密 master 資訊的可變動 aes 金鑰傳送至 salt minion。其中,返回給 salt minion 的 aes 金鑰由 minion 的公鑰加密,可由 salt minion 解密。
部署環境:
server1 172.25.254.1 salt-master
server2 172.25.254.2 salt-minion
server3 172.25.254.3 salt-minion
以上主機系統為 rhel7.6,且防火牆和selinux均為關閉狀態。
官網:安裝可以參考:
設定官方yum倉庫(每個主機都要操作):
yum install
salt-master主機配置安裝master端:
[root@server1 yum.repos.d]# yum install salt-master -y
設定master自啟動並啟動服務:
[root@server1 ~]# systemctl enable --now salt-master
created symlink from /etc/systemd/system/multi-user.target.wants/salt-master.service to /usr/lib/systemd/system/salt-master.service.
master端的配置檔案為/etc/salt/master。
啟動後檢視埠可以看出開啟了4505和4506兩個埠:
salt-minion端配置
安裝minion端:
以下操作以server2為例,server3和server2的操作相同:
[root@server2 ~]# yum install -y salt-minion
minion端的配置檔案為/etc/salt/minion:
[root@server2 ~]# cd /etc/salt/
[root@server2 salt]# vim minion
[root@server2 salt]# cat -n minion | grep 16
第16行設定master主機的ip:
設定自啟動
[root@server2 salt]# systemctl enable --now salt-minion
server3與server2操作相同。
配置連線
(1)salt-master端:
[root@server1 salt]# salt-key -l
accepted keys:
denied keys:
unaccepted keys:
server2
rejected keys:
可以看出server2正在等待確認,使用以下命令確認:
[root@server1 salt]# salt-key -a
the following keys are going to be accepted:
unaccepted keys:
server2
proceed? [n/y] y
key for minion server2 accepted.
其中引數說明:
-a表示接受所有,-a表示指定接受,-d表示指定刪除,-d表示全部刪除
再次檢視公鑰情況可以看出server2和server3已經確認
他們之間的公鑰儲存在/etc/salt/pki目錄中
(2)部署完成後可以使用以下命令測試:
其中,』*'代表agent端的所有主機(即server2和server3),test表示模組,作用與python中的模組類似,ping表示test模組中的函式,作用與python中的函式類似。
備註:
若salt-minion端更改主機名後需進行如下設定
當salt-minion端更改主機名後我們在master端檢視會發現沒有改變,此時我們需要將儲存salt-minion端主機名的快取刪除,快取儲存在/etc/salt/minion_id檔案中,刪除這個檔案後重啟salt-minion即可。
[root@server2 salt]# cd /etc/salt/
[root@server2 salt]# ls
cloud cloud.maps.d master minion.d proxy
cloud.conf.d cloud.profiles.d master.d minion_id proxy.d
cloud.deploy.d cloud.providers.d minion pki roster
[root@server2 salt]# cat minion_id
server2[root@server2 salt]#
自動化運維 Saltstack 教程
name version capacity centos 7 3.10.0 693.el7.x86 64 1 smp tue aug 22 21 09 27 utc 2017 x86 64 x86 64 x86 64 gnu linux saltstack 常見自動化運維工具 puppet www....
salt stack 運維工具 自動化(二)
基於完成安裝的salt master和minion 接下來配置它強大的的管理功能。需求 分發 從伺服器執行指令,例如 可以指定某客戶端或者所有客戶端執行安裝nginx。master 與 minion 認證 1.minion 在第一次啟動時,會在 etc salt pki minion 該路徑在 et...
自動化運維工具Saltstack學習筆記(二)
前面學習了saltstack安裝和基本的配置,可以通過saltstack批量執行系統命令,包括系統重啟,檢視系統負載,新增 刪除使用者等等。也可以把線上web,db,bbs等安裝和配置相同或相近的伺服器分為一組,通過saltstack的group功能批量執行管理。下面通過saltstack來實現批量...