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

这一章参考: