master端匹配minion的方式
在SaltStack系统中的管理对象叫做Target。简写: tgt
(1)正则表达式
# 正则表达式匹配的是 Minion端的 ID 值 salt -E 'min*' test.ping
(2)list 列表匹配
# 列表匹配也是匹配的Minion端的 ID 值 salt -L minion1,minion2 test.ping salt -L minion1, test.ping salt -L minion1 test.ping
(3)Grains 匹配
# 通过minions的grains item 来匹配 salt -G 'os:CentOS' test.ping
(4)组匹配
# 通过对minion分组,对整个组进行匹配,操作,groups是组名 # 组是需要人为划分的 salt -N groups test.ping
(5)复合匹配
# 复合匹配支持使用and和or关联多个条件 salt -C 'G@os:Centos or L@Minion1' test.ping ## 使用grains属性来匹配 [root@hadoop0 pillar]# salt -C 'G@os:Ubuntu' test.ping uadoop1: True ## 使用Minion ID的正则表达式来匹配 [root@hadoop0 pillar]# salt -C 'E@uadoop\d+' test.ping uadoop2: True uadoop3: True uadoop1: True ## 使用grains属性的正则表达式来匹配 [root@hadoop0 pillar]# salt -C 'P@os:(RedHat|Ubuntu|CentOS)' test.ping uadoop2: True uadoop3: True uadoop1: True ## 使用Minion ID来匹配 [root@hadoop0 pillar] salt -C 'L@uadoop2,uadoop3' test.ping uadoop2: True uadoop3: True ## 使用pillar定义的属性来匹配 [root@hadoop0 pillar]# salt -C 'I@users:foway:1200' test.ping uadoop2: True uadoop1: True uadoop3: True
(6)Pillar值匹配
# key:value 是Pillar系统中定义的一组键值对,跟Grains的键值对类似。 salt -I 'key:value' test.ping
(7)CIDR匹配
# 通过一个指定的CIDR网段,这里CIDR匹配的IP地址是Minion连接Master 4505端口的来源地址 salt -S '192.168.1.0/24' test.ping
对Minions 进行分组
通过对minion id 进行分组,可以通过组这个概念来批量操作受控主机。分组信息默认保存在 /etc/salt/master。可以通过创建子配置文件的方式来修改存放分组信息的文件。在master的主配置文件中有include配置文件(子配置文件)的设定: default_include: master.d/*.conf , 目录和文件都需要自己来创建。这样可以避免直接操作Master主配置文件 。
分组语法:
注意:分组语法与匹配类似,注意区分。匹配中可以使用and, or 及not等boolean 型操作。
分组配置文件示例
# /etc/salt/master.d/group.conf nodegroups: group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com or bl*.domain.com' group2: 'G@os:Debian and foo.domain.com' group3: 'G@os:Debian and N@group1' group4: - 'G@foo:bar' - 'or' - 'G@foo:baz
分组后记得需要重启salt-master,才能加载新的分组信息。
Salt 批处理执行方式
# 每次同时执行10台执行,就是每10台一组执行cmd.run [root@salt-master ~]# salt '*' -b 10 cmd.run 'whoami' Executing run on ['salt-master '] salt-master : root jid: 20171222160450456555 retcode: 0