saltstack正则匹配主机
时间:2019-09-23
本文章向大家介绍saltstack正则匹配主机,主要包括saltstack正则匹配主机使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
一、正则语法
语法 | 说明 | 表达式实例 | 完整匹配的字符串 |
---|---|---|---|
. | 匹配任意除换行字符"\n"外的字符,在DOTALL模式中也能匹配换行符 | a.c | abc |
\ | 转移字符,使后一个字符改变原来的意思,如果字符串中有*需要匹配,可使用\*或者字符集[*] | a\.c | a.c |
[...] | 字符集,对应的位置可以是字符集中任意字符。 | a[bcd]e | abe、ace、ade |
\d | 数字:0~9 | a\dc | a1c |
\D | 非数字:[^\d] | a\Dc | abc |
\s | 空白字符:[<空格>\t\r\n\f\v] | a\sc | a c |
\S | 非空白字符:[^\s] | a\Sc | abc |
\w | 字符[A-Za-z0-9] | a\wc | abc |
\W | [^\w] | a\Wc | ac |
* | 匹配前一个字符0次或无限次 | abc* | abcc |
+ | 匹配前一个字符1次或无限次 | abc* | abcc |
? | 匹配前一个字符0次或1次 | abc? | ab、abc |
{m} | 匹配前一个字符m次 | ab{2}c | abbc |
{m,n} | 匹配前一个字符m次,m和n可以省略,若省略m,则匹配0至n次,若省略n,则匹配m至无限次 | ab{1,2}c | abc、abbc |
^ | 匹配字符串开头,在多行模式中匹配每一行的开头 | ^abc | abc |
$ | 匹配字符串末尾,在多行模式中匹配每一行的末尾 | abc$ | abc |
\A | 进匹配字符串开头 | \Aabc | abc |
\Z | 仅匹配字符串结尾 | abc\Z | abc |
以特定字符开头或结尾的匹配方式:
[root@29-server ~]# salt -E "^minion-.*" test.ping
minion-one:
True
[root@29-server ~]# salt -E ".*-one$" test.ping
minion-one:
True
[root@29-server ~]# salt -E 'm{0, 1} inio[m, n]-one$' test.ping
minion-one:
True
分组匹配的方式:
[root@29-server ~]# salt -E 'minion-((one)|(other))' test.ping
minion-one:
True
[root@29-server ~]# salt -E 'minion-(one)?' test.ping
minion-one:
True
二、列表匹配
有时候,我们只想匹配一个指定列表里面的主机并进行远程执行操作,这时可能全局匹配方式和正则表达式方式都无法很好地完成任务,这种情况下我们可以直接使用-L选项进行列表匹配。
[root@29-server ~]# salt -L "minion-one, minion-two, minion-three" test.ping
minion-one:
True
minion-two:
True
minion-three:
True
通常列表匹配的主机都写在master的配置文件中,/etc/salt/master中以nodegroups形式出现,包括正则匹配全局匹配等方式都可以写在配置文件中,然后通过分组匹配选项-N加上nodegroups名称进行匹配。
[root@29-server ~]# cat /etc/salt/master |grep -vE "^$|#"
nodegroups:
testgroup: "minion-one"
[root@29-server ~]# salt -N "testgroup" test.ping
minion-one:
True
三、grains匹配
我们可以使用Grains定位主机:利用-G或—grain:对只是CentOS的机器进行定位。
[root@29-server ~]# salt -G "os:CentOS" test.ping
minion-one:
True
定位系统版本是7.6的主机,如下所示。
[root@29-server ~]# salt "minion-one" grains.item osrelease
minion-one:
----------
osrelease:
7.6.1810
[root@29-server ~]# salt -G "osrelease:7.6.1810" test.ping
minion-one:
True
四、pillars匹配
创建两个自定义的pillar数据
[root@29-server]# tree /srv/pillar/
/srv/pillar/
├── test.sls
└── top.sls
[root@29-server ~]# cat /srv/pillar/top.sls
base:
'*':
- test
[root@29-server ~]# cat /srv/pillar/test.sls
name: wang
role: aaa
[root@29-server ~]# salt '*' pillar.items
minion-one:
----------
name:
wang
role:
aaa
匹配role值是Web的主机并执行远程命令:
[root@29-server ~]# salt -I "name:wang" test.ping
minion-one:
True
五、复合匹配
复合匹配如下所示,这些匹配方式之间用逻辑运算符进行组合,同时用@符号来规定每部分匹配的类型。这段匹配的含义是匹配所有minion-开头的并且操作系统是CentOS且不能以two结尾的主机。
[root@29-server ~]# salt -C 'minion-* and G@os:CentOS not E@.*-two$' test.ping
minion-one:
True
复合匹配可以混合所有的Salt匹配主机方法,以下为官方文档的所有匹配方式。
字母 | 匹配类型 | 示例 |
---|---|---|
G | Grains glob | G@os:Ubuntu |
E | PCRE Minion ID | E@web\d+\(dev|qa|prod)\.loc |
P | Grains PCRE | P@os:(RedHat|Fedora|CentOS) |
L | List of minions | L@agent1,agent2,agent3 |
I | Pillar glob | I@pdata:foobar |
S | Subnet/ IP address | S@192.168.1.0/24 or S@192.168.2.0/24 |
R | Range cluster | R@%foo.bar |
原文地址:https://www.cnblogs.com/wangyajian/p/11572572.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- CentOS 6 安装 Chrome最简单的方法
- Mysql事物和锁
- PyTorch7:torch.nn.init
- Puppeteer 入门与实战
- 【DB笔试面试854】在Oracle中,删除数据库的方式有哪几种?
- 方差齐性检验
- Windows WSL2 htop打开黑屏的问题解决
- 【DB笔试面试855】在Oracle中,简单说说PSU升级的过程
- HashMap中add()方法的源码学习
- IOC容器实现
- Docker安装mysql
- 【LeeCode 面试题】二叉树的前序遍历,中序遍历,后序遍历递归和迭代的两种实现方式
- MySQL笔记汇总
- 【DB笔试面试856】在Oracle中,如何判定实例是否运行?
- 【DB笔试面试857】在Oracle中,若一个主机上有多个Oracle实例,则如何确定哪些共享内存段属于想要清掉的实例的内存段?