1 Master与Minion认证过程:
1.minion在第一次启动时,会在/etc/salt/pki/minion/(该路径在/etc/salt/minion里面设置)下自动生成minion.pem(private key)和minion.pub(public key),
然后将minion.pub发送给master。
2.master 在接收到minion的public key后,通过salt-key命令accept minion public key,这样在master的/etc/salt/pki/master/minions下的将会存放以minion id命名的public key,
然后master就能对minion发送指令了。
2 Master与Minion的连接
Saltstack master启动后默认监听4505和4506两个端口。4505(publish_port)为salt的消息发布系统,
4506(ret_port)为salt客户端与服务端通信的端口。如果使用lsof查看4505端口,会发现所有的Minion在4505端口持续保持在ESTABLISHED
3 Master与Minion的Key:
由于上面已经设置了客户端自动注册到服务端,所以直接可以查看是否有客户端注册
[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
这一章参考: