通过minion-id来全局或正则表达式匹配
1 | salt '*' test.ping |
通过minion-id来列表匹配
有些我们只想匹配一个指定列表里面的主机并进行远程执行操作,这个时候全局匹配和正则表达式匹配就无法满足了。这时我们可以使用列表匹配,就需要用-L参数。
1 | salt -L 'node2.51yuki.cn,node3.51yuki.cn' test.ping |
通过Grains信息来确定target
Grains是描述salt-minion本身固有属性的静态数据(是在salt-minion启动的时候收集),如salt-minion端的操作系统版本、内存大小、硬盘及网卡信息等。如果salt-minion端的数据发生改变后,就必须要重启salt-minion,否则就不会生效。
1 | salt -G 'roles:apache' cmd.run 'sudo systemctl restart httpd' #-G参数指定使用Grains来确定target |
通过Pillar信息来确定target
Pillar数据同Grains相似,不同之处是Pillar数据可以定义为动态的。给特定的salt-minion指定特定的数据,只有指定salt-minion自己能看到自己的数据。
1 | salt -I 'apache:httpd' cmd.run 'df -h' #-I参数指定使用Pillar来确定target |
通过子网或IP来确定target
1 | salt -S 10.2.11.228 cmd.run 'df -h' |
备注:使用-S参数来表明使用子网或IP来确定target
组合匹配
举例来说,
1 | salt -C 'S@10.2.11.0/24 and G@os:CentOS' cmd.run 'df -h' #-C表示使用组合匹配来确定target,本例是Grains信息和网段的组合来确定target |
NodeGroup
在salt-master的主配置文件/etc/salt/master中加入类似如下的分组信息:
nodegroups:
group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com or bl*.domain.com'
group2: 'G@os:Debian and N@group1'
group3: 'E@test2(1[1-9]|3[1-2]).company.com'
然后使用-N来指定一个nodegroup来作为target,如:
1 | salt -N group2 cmd.run 'df -h' |