我在使用带盐的正则表达式来定位除一个之外的所有小兵时遇到了麻烦。
我尝试了所有能找到的例子,用尽了我对 Perl 正则表达式的有限理解。我预计这会针对每个 minion(所有名为 something.domain.co.uk):
^(?!.*mail).*$
但是它返回零值。
任何帮助将不胜感激
答案1
PCRE Minion_ID 复合匹配器表示的E@
就是您想要的。
当在命令行上定位 minions 时:
salt -C 'E@^(foo|bar)$' test.ping
或者在顶部文件中:
base:
'E@^(?!.*mail).*$':
- match: compound
是的,你可以使用salt -E 'regex'
或- match: pcre
并跳过纯 minion_id 正则表达式的前导E@
,但链接多个匹配器(grains PCRE、cidr ip block 等)可以非常具有表现力:
salt -C 'G@os:(Ubuntu|Debian) and G@domain:example\.(com|net) and E@^(?!.*mail).*$'
答案2
在您的 top.sls 中,使用以下语法进行匹配:
base:
'^(?!.*mail).*$':
- match: pcre
- states_to_apply
来源:http://docs.saltstack.com/en/latest/topics/targeting/globbing.html