salt匹配规则有多种,对应各种不同的场景,相关参数如下图所示。现总结如下:

wKiom1ky3yiwr4DrAAAUT_jsDgU181.png-wh_50

1、正则匹配

[root@salt-master~]#salt-E'salt-minion(01|02).contoso.com'test.ping
salt-minion01.contoso.com:
True
salt-minion02.contoso.com:
True
[root@salt-master~]#salt-E'salt-minion0[1-2].contoso.com'test.ping
salt-minion02.contoso.com:
True
salt-minion01.contoso.com:
True


2、列表匹配

[root@salt-master~]#salt-L'salt-minion01.contoso.com,salt-minion02.contoso.com'test.ping
salt-minion01.contoso.com:
True
salt-minion02.contoso.com:
True

3、Grains匹配

saltstack Grains项可以通过如下命令获取:

root@salt-master~]#salt'salt-minion01.contoso.com'grains.items
salt-minion01.contoso.com:
----------
SSDs:
biosreleasedate:
07/02/2015
biosversion:
6.00
cpu_flags:
-fpu
-vme
-mtrr
-sse
-sse2
-ssse3
....
cpu_model:
Intel(R)Core(TM)i7-6820HQcpu@2.70GHz
cpuarch:
x86_64
domain:
contoso.com
fqdn:
salt-minion01.contoso.com
fqdn_ip4:
-192.168.49.101
fqdn_ip6:
gpus:
|_
----------
model:
SVGAIIAdapter
vendor:
unkNown
host:
salt-minion01
hwaddr_interfaces:
----------
eth0:
00:0c:29:f3:43:86
lo:
00:00:00:00:00:00
id:
salt-minion01.contoso.com
init:
upstart
ip4_interfaces:
----------
eth0:
-192.168.49.101
lo:
-127.0.0.1
ip6_interfaces:
----------
eth0:
-fe80::20c:29ff:fef3:4386
lo:
-::1
ip_interfaces:
----------
eth0:
-192.168.49.101
-fe80::20c:29ff:fef3:4386
lo:
-127.0.0.1
-::1
ipv4:
-127.0.0.1
-192.168.49.101
ipv6:
-::1
-fe80::20c:29ff:fef3:4386
kernel:
Linux
kernelrelease:
2.6.32-431.el6.x86_64
locale_info:
----------
defaultencoding:
UTF8
defaultlanguage:
en_US
detectedencoding:
UTF-8
localhost:
salt-minion01.contoso.com
lsb_distrib_codename:
Final
lsb_distrib_id:
CentOS
lsb_distrib_release:
6.5
machine_id:
ff172a920d48e1f109f755820000000a
manufacturer:
VMware,Inc.
master:
salt-master.contoso.com
mdadm:
mem_total:
980
nodename:
salt-minion01.contoso.com
num_cpus:
1
num_gpus:
1
os:
CentOS
os_family:
RedHat
osarch:
x86_64
oscodename:
Final
osfinger:
CentOS-6
osfullname:
CentOS
osmajorrelease:
6
osrelease:
6.5
osrelease_info:
-6
-5
path:
/sbin:/usr/sbin:/bin:/usr/bin
productname:
VMwareVirtualPlatform
ps:
ps-efH
pythonexecutable:
/usr/bin/python2.6
pythonpath:
-/usr/bin
-/usr/lib64/python26.zip
-/usr/lib64/python2.6
-/usr/lib64/python2.6/plat-linux2
-/usr/lib64/python2.6/lib-tk
-/usr/lib64/python2.6/lib-old
-/usr/lib64/python2.6/lib-dynload
-/usr/lib64/python2.6/site-packages
-/usr/lib64/python2.6/site-packages/gtk-2.0
-/usr/lib/python2.6/site-packages
-/usr/lib/python2.6/site-packages/setuptools-0.6c11-py2.6.egg-info
pythonversion:
-2
-6
-6
-final
-0
saltpath:
/usr/lib/python2.6/site-packages/salt
saltversion:
2015.5.10
saltversioninfo:
-2015
-5
-10
-0
selinux:
----------
enabled:
False
enforced:
disabled
serialnumber:
VMware-564dc8bc18865f20-cb2f72e2bbf34386
server_id:
175207945
shell:
/bin/sh
virtual:
VMware
zmqversion:
3.2.5

当然,也可以就某一个Grains项进行查询,如下所示:

[root@salt-master~]#salt'salt-minion01.contoso.com'grains.itemos
salt-minion01.contoso.com:
----------
os:
CentOS
[root@salt-master~]#salt'salt-minion01.contoso.com'grains.itemkernelrelease
salt-minion01.contoso.com:
----------
kernelrelease:
2.6.32-431.el6.x86_64
[root@salt-master~]#salt'salt-minion01.contoso.com'grains.itemhost
salt-minion01.contoso.com:
----------
host:
salt-minion01

获取到上述Grains项之后,就可以有目的的进行匹配了,示例如下:

[root@salt-master~]#salt-G'os:CentOS'test.ping
salt-minion02.contoso.com:
True
salt-minion01.contoso.com:
True
[root@salt-master~]#salt-G'kernelrelease:2.6.32-431.el6.x86_64'test.ping
salt-minion02.contoso.com:
True
salt-minion01.contoso.com:
True

4、组匹配

首先,编辑master的配置文件,并添加如下内容:

vim /etc/salt/master

nodegroups:

testgroup1: 'L@salt-minion01.contoso.com,salt-minion02.contoso.com'

testgroup2: 'G@os:CentOS and G@domain:contoso.com'

testgroup3: 'G@os:CentOS and E@salt-minion01.*'

然后就可以根据master配置中定义中的组进行匹配,示例如下:

[root@salt-master~]#salt-Ntestgroup1test.ping
salt-minion01.contoso.com:
True
salt-minion02.contoso.com:
True
[root@salt-master~]#salt-Ntestgroup2test.ping
salt-minion01.contoso.com:
True
salt-minion02.contoso.com:
True
[root@salt-master~]#salt-Ntestgroup3test.ping
salt-minion01.contoso.com:
True

5、复合匹配

[root@salt-master~]#salt-C'G@os:CentOSandE@salt-minion02*'test.ping
salt-minion02.contoso.com:
True
salt-minion01.contoso.com:
True
[root@salt-master~]#salt-C'G@host:salt-minion01orL@salt-minion02.contoso.com'test.pingsalt-minion01.contoso.com:
True
salt-minion02.contoso.com:
True
[root@salt-master~]#salt-C'G@host:salt-minion01andG@domain:contoso.com'test.ping
salt-minion01.contoso.com:
True

6、CIDR匹配

[root@salt-master~]#salt-S'192.168.49.0/24'test.ping
salt-minion01.contoso.com:
True
salt-minion02.contoso.com:
True
[root@salt-master~]#salt-S'192.168.49.101'test.ping
salt-minion01.contoso.com:
True

7、Pillar匹配(暂时省却,后续添加)

saltstack模式匹配的更多相关文章

  1. 可以匹配就匹配咯: 详解 Swift 的模式匹配

    怒戳查看最终稿@SwiftGG在众多Swift提供给Objective-C程序员使用的新特性中,有个特性把自己伪装成一个无聊的老头,但是却在如何优雅滴解决“鞭尸金字塔“的问题上有着巨大的潜力。很显然我所说的这个特性就是switch语句,对于很多Objective-C程序员来说,除了用在Duff’sDevice上比较有趣之外,switch语句非常笨拙,与多个if语句相比,它几乎没有任何优势。不过Sw

  2. Swift中的模式匹配

    模式是用于匹配的规则值,如switch语句的case,do语句的catch子句,以及if、while、guard、for-in语句的条件。例如,假设你想判断一个整数是大于、小于还是等于零,你可以用if-elseif-else语句,尽管这并不美观:letx=10ifx>0{print}elseifx原文查看:http://bbs.a-coder.cn/thread-7-1-1.html

  3. 《swift2.0 官方教程中文版》 第3章-05模式

    letpoint=(3,2)switchpoint{caselet(x,y):print}//prints"Thepointisat(3,2).”/*元组模式********************************************///元组模式是逗号分隔的,有零个或多个模式的列表,并被一对圆括号括起来。枚举用例模式出现在switch语句中的case标签中,以及if,while,guard和for-in语句的case条件中。is模式和is操作符有相似表现,它们都进行类型转换,却舍弃返回的类型

  4. 模式匹配第一弹: switch, enums & where 子句

    本文作为模式匹配的第一篇介绍文章,旨在抛砖引玉。Switch基本用法Swift中最简单、最为常见的模式匹配就是switch语句,大家对下面的形式都比较熟悉了:但是switch可以更进一步,允许使用包含变量的匹配模式,并在匹配时绑定这些变量。下一部分的计划这篇文章很简单,带你回顾了swith中的一些基本的模式匹配,下一部分将探讨更高级的用法,包括:在enum之外的其他地方使用switch与其他语句一起配合使用模式匹配,包括ifcase,guardcase,forcase,=~,…

  5. 模式匹配第三弹: 自定义的模式匹配和语法糖

    作者:OlivierHalligon,原文链接,原文日期:2015-04-24译者:walkingway;校对:小锅;定稿:numbbbbb在模式匹配系列文章的第一弹和第二弹中,我们已经看到关于switch搭配很多类型的用法,包括元组,范围,字符串,符号和一些其他类型。让你的自定义类型响应模式匹配我们构造一个自定义的结构体:最终打印的结果是3x+2!值得注意的一点是:在使用自定义类型时,Swift不知道switch是否穷尽了所有可能。更好的方式是在switch中直接传入aBook.year。

  6. Swift中switch强大的模式匹配

    不少人觉得Swift中switch语句和C或C++,乃至ObjC中的差不多,此言大谬!很简单,和变量声明一样用let语句:如果我还想进一步增加判断条件呢!?很简单,后面跟where子句:我们可以按照实际需求自由改变模式,最后举一个例子:

  7. 4.8 Swift中switch语句区间和元组模式匹配

    //switch的广义匹配letx=1000//也就是说并没有像C语言那样要求switch后面的是整数常量switchx{//case后面可以跟区间啦case1...9:print("个位数")case10...99:print("十位数")case100...999:print("百位数")case1000...9999:print("千位数")default:print("不符合")}letp

  8. if-statement – 我可以在Swift中使用range运算符和if语句吗?

    可以使用范围运算符…Maye像这样:你可以使用“pattern-match”运算符=:或者具有表达式模式的switch语句运算符):注意,表示省略上限值的范围,因此您可能需要200…附加信息:当上面的代码在Xcode6.3中编译时优化打开,然后进行测试实际上根本没有生成函数调用,只有三个汇编指令:这是为生成的完全相同的汇编代码您可以验证从Swift2开始,这可以写成使用新引入的if语句的模式匹配。参见Swift2–Patternmatchingin“if”。

  9. Swift 2 – 模式匹配在“if”

    最近我看到了来自苹果的WWDC2015主题演讲。我也看了一些文档,但我找不到“模式匹配if”部分,它是如何写在他们已经显示的幻灯片之一。你知道这是指什么吗?所有这真的意味着if语句现在支持像switch语句已经有模式匹配。例如,以下是使用if/elseif/else语句来“切换”枚举的有效方式。现在,以下是检查someInteger是否在给定范围内的可接受的方法。

  10. Swift 2:’Bool’类型的表达式模式不能匹配’Int’类型的值

    我正在做这个问题集“FizzBuzz”,我的switch语句给了我一些问题,这是我的代码:如果你可以提供指针/提示,而不是给我正确的代码,那就会膨胀:D我宁愿自己解决这个问题,但是一些提示可能会让我脱离这个洞.尝试使用“caseletwhere”:

随机推荐

  1. 法国电话号码的正则表达式

    我正在尝试实施一个正则表达式,允许我检查一个号码是否是一个有效的法国电话号码.一定是这样的:要么:这是我实施的但是错了……

  2. 正则表达式 – perl分裂奇怪的行为

    PSperl是5.18.0问题是量词*允许零空间,你必须使用,这意味着1或更多.请注意,F和O之间的空间正好为零.

  3. 正则表达式 – 正则表达式大于和小于

    我想匹配以下任何一个字符:或=或=.这个似乎不起作用:[/]试试这个:它匹配可选地后跟=,或者只是=自身.

  4. 如何使用正则表达式用空格替换字符之间的短划线

    我想用正则表达式替换出现在带空格的字母之间的短划线.例如,用abcd替换ab-cd以下匹配字符–字符序列,但也替换字符[即ab-cd导致d,而不是abcd,因为我希望]我如何适应以上只能取代–部分?

  5. 正则表达式 – /bb | [^ b] {2} /它是如何工作的?

    有人可以解释一下吗?我在t-shirt上看到了这个:它似乎在说:“成为或不成为”怎么样?我好像没找到’e’?

  6. 正则表达式 – 在Scala中验证电子邮件一行

    在我的代码中添加简单的电子邮件验证,我创建了以下函数:这将传递像bob@testmymail.com这样的电子邮件和bobtestmymail.com之类的失败邮件,但是带有空格字符的邮件会漏掉,就像bob@testmymail也会返回true.我可能在这里很傻……当我测试你的正则表达式并且它正在捕捉简单的电子邮件时,我检查了你的代码并看到你正在使用findFirstIn.我相信这是你的问题.findFirstIn将跳转所有空格,直到它匹配字符串中任何位置的某个序列.我相信在你的情况下,最好使用unapp

  7. 正则表达式对小字符串的暴力

    在测试小字符串时,使用正则表达式会带来性能上的好处,还是会强制它们更快?不会通过检查给定字符串的字符是否在指定范围内比使用正则表达式更快来强制它们吗?

  8. 正则表达式 – 为什么`stoutest`不是有效的正则表达式?

    isthedelimiter,thenthematch-only-onceruleof?PATTERN?

  9. 正则表达式 – 替换..与.在R

    我怎样才能替换..我尝试过类似的东西:但它并不像我希望的那样有效.尝试添加fixed=T.

  10. 正则表达式 – 如何在字符串中的特定位置添加字符?

    我正在使用记事本,并希望使用正则表达式替换在字符串中的特定位置插入一个字符.例如,在每行的第6位插入一个逗号是什么意思?如果要在第六个字符后添加字符,请使用搜索和更换从技术上讲,这将用MatchGroup1替换每行的前6个字符,后跟逗号.

返回
顶部