1 Master與Minion認證過程:html
1.minion在第一次啓動時,會在/etc/salt/pki/minion/(該路徑在/etc/salt/minion裏面設置)下自動生成minion.pem(private key)和minion.pub(public key),node
而後將minion.pub發送給master。linux
2.master 在接收到minion的public key後,經過salt-key命令accept minion public key,這樣在master的/etc/salt/pki/master/minions下的將會存放以minion id命名的public key,web
而後master就能對minion發送指令了。正則表達式
2 Master與Minion的鏈接shell
Saltstack master啓動後默認監聽4505和4506兩個端口。4505(publish_port)爲salt的消息發佈系統,vim
4506(ret_port)爲salt客戶端與服務端通訊的端口。若是使用lsof查看4505端口,會發現全部的Minion在4505端口持續保持在ESTABLISHEDide
3 Master與Minion的Key:測試
因爲上面已經設置了客戶端自動註冊到服務端,因此直接能夠查看是否有客戶端註冊.net
[root@master slave]# salt-key -L
Accepted Keys:
slave_141
slave_142
slave_143
Unaccepted Keys:
Rejected Keys:
Accepted Keys:爲被服務端接受的KEY(slave_141 slave_142 slave_143就是minion中的id標識號)
Unaccepted Keys:未被服務端接受的KEY
Rejected Keys:被服務端拒絕的KEY
salt-key命令能夠接受特定的單個key或批量接受key, 使用-A選項接受當前全部的key, 接受單個key能夠使用-a idname.
4 在服務端salt匹配minion id
在運行salt命令進行匹配時,請使用單引號('),避免shell解析
匹配全部minion:salt '*' test.ping
匹配下邊域的全部minion:salt '*.example.*' test.ping
匹配example.net域中的(web1.example.net、web2.example.net......webN.example.example.net):salt 'web?.example.net' test.ping
匹配web1到web5的minion: salt 'web[1-5]' test.ping
匹配web-x、web-y及web-z minion: salt 'web-[x-z]' test.ping
5 正則表達式:
匹配web-prod和web1-devel minion:
salt -E 'web1-(prod|devel)' test.ping
指定列表
salt -L 'web1,web2,web3' test.ping
指定組:
在服務務端中打開master配置文件
vim /etc/salt/master
添加以下分組
nodegroups:
group1: 'L@slave_143,slave_141'
group2: 'slave_142'
值得注意的是編輯master的時候,group1和group2前面是2個空格
6 測試:
[root@drfdai-17 salt]#salt -N group2 test.ping
slave_142:
True
可能你們會好奇group1中爲何會有L@,這表明什麼意思?
其實L是指客戶端列表,咱們一組中有多個客戶端,因此在前面用L表示。除了有列表匹配外,還有不少匹配方式,如:
這些參數均可以直接在命令行使用,如:
salt -S '192.168.43.142' test.ping
salt -G 'os:Centos' test.ping
salt -L '230,68' test.ping
minion基本信息的管理
基本使用:
salt '*' grains.ls 查看grains分類
salt '*' grains.items 查看grains全部信息
salt '*' grains.item osrelease 查看grains某個信息
如:
[root@drfdai-17 salt]# salt '*' grains.item osrelease
230:
osrelease: 6.2
68:
osrelease: 6.2