E -- 针对 minion 针对正则表达式做匹配,例如:E@web\d+.(dev|qa|prod).loc
P -- 针对 Grains 做正则表达式匹配,例如:P@os:(RedHat|Fedora|CentOS)
L -- 针对 minion 做列表匹配,例如:L@minion1.example.com,minion3.domain.com or bl*.domain.com
I -- 针对 Pillar 做单个匹配,例如:I@pdata:foobar
S -- 针对子网或是 IP 做匹配,例如:S@192.168.1.0/24 or S@192.168.1.100
R -- 针对客户端范围做匹配,例如: R@%foo.bar
然后我自己在做分组的时候,尝试了下 L 是否可以使用正则表达式 尝试一:
nodegroups:
# group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com and bl*.domain.com'
# group2: 'G@os:Debian and foo.domain.com'
TEST1: 'L@JF1-TEST1-001,JF1-TEST1-002,JF-TEST1-0[0-9][0-9]'
执行命令 sudo salt -N TEST1 test.ping结果为:
JF1-TEST1-002: TrueJF1-TEST1-001: True 只会出现两台服务器,后面的不能匹配。 尝试二:
nodegroups:
# group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com and bl*.domain.com'
# group2: 'G@os:Debian and foo.domain.com'
TEST1: 'L@JF1-TEST1-001,JF1-TEST1-002 or JF-TEST1-0[0-9][0-9]'
执行命令 sudo salt -N TEST1 test.ping结果为:
JF1-TEST1-002: TrueJF1-TEST1-001: TrueJF1-TEST1-003: TrueJF1-TEST1-004: TrueJF1-TEST1-006: TrueJF1-TEST1-005: True 结果是所有的都匹配成功了 尝试三
nodegroups:
# group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com and bl*.domain.com'
# group2: 'G@os:Debian and foo.domain.com'
TEST1: 'L@JF-TEST1-0[0-9][0-9]'
执行结果为:
No minions matched the target. No command was sent, no jid was assigned. 表示没有匹配到任何一个 结论
使用 L 列表的方式,必须把 minion 列出来,或者是列出几台后,在后面接 or 或者 and 表达式, or 或者 and 后面接的表达式后面可以使用正则表达式。