什么是Targeting?
Targeting minions 是指哪些minion会作为运行命令或是执行状态的目标。这些目标可以是一个主机名,系统信息,定义的分组,甚至是自定义的绑定的对象。
例如:
salt ‘*’ test.ping #匹配所有的minion
Targing的匹配方式
通配符匹配
-G Grains匹配
-I Pillar匹配
-L 列表匹配
-E Minion Id 正则匹配
-S 子网/IP地址匹配
-R Range cluster匹配
通配符匹配
salt '*' test.ping
salt '192.168.0.*' test.ping
salt 'node[23-24]' test.ping
Minion Id 正则匹配
salt -E 'node(23|24).com' test.ping
在top.sls文件中使用正则匹配
base:
'node(23|24).com':
- match: pcre
- nginx
列表匹配
对一些特殊要求的minion对象,也可以手动指定一系列ID作为目标
salt -L 'node23.com,node24.com' test.ping
Grains匹配
salt -G 'os:CentOS' test.ping
在top.sls文件中使用grains匹配
base:
'os:CentOS':
- match: grain
- nginx
Pillar匹配
pillar的匹配方式跟grains差不多,不过需要把key/value换成pillar对象
salt -I 'nginx:PORT:8081' cmd.run 'uptime'
子网/IP地址匹配
salt -S '192.168.0.0/24' test.ping
最后,有时候匹配到的minion会有很多,如果同时执行可能导致master直接挂机,所以salt很贴心得给了个分批执行的功能,例如下面的操作:
# 分10个minion一批进行执行,直到执行完毕
salt '*' -b 10 test.ping
# 分成25%一批进行执行,直到执行完毕
salt -G 'os:CentOS' --batch-size 25% state.highstate