Saltstack系列第六篇,上一篇说道将Salt获取的信息,自动收集到Mysql中,那么今天我们就学习下,Salt-Minion上如何获取你要写信息,或者叫状态,我们对这种状态简称“Target”。
一、Salt远程执行中目标选择常用的模式
通配符匹配
正则表达式匹配
List支持
Grains匹配
IP地址匹配
混合匹配
Node groups
模式指的就是使用salt-minion
获取client
的方式:下面我们通过实践来逐一说明;
二、salt远程执行格式
1,语法
salt '<target>' <function> [arguments]
2,通配符匹配,支持minon_id
[root@node01 ~]# salt "*" test.ping
node02:
True
node01:
True
[root@node01 ~]# salt "node01" test.ping
node01:
True
3,正则表达式,同样也支持在状态文件里面使用.
[root@node01 ~]# salt -E "node0[1-2]" test.ping
node02:
True
node01:
True
[root@node01 ~]# salt -E "node0[0-1]" test.ping
node01:
True
4,-L List列表 支持
[root@node01 ~]# salt -L "node01,node02" test.ping
node01:
True
node02:
True
5,grains匹配
[root@node01 ~]# salt -G 'host:node01' test.ping
node01:
True
[root@node01 ~]# salt -G "os:centos" test.ping
node02:
True
node01:
True
6,IP地址匹配
[root@node01 ~]# salt -S "192.168.56.0/24" test.ping #不支持子网掩码255.255.255.0
node01:
True
node02:
True
#单个IP
[root@node01 ~]# salt -S "192.168.56.11" test.ping
node01:
True
7,混合匹配(就是将上面多种匹配方式放到一起使用)
"优点":匹配更加精准
"缺点":内容复杂,已出错
[root@node01 ~]# salt -C 'S@192.168.56.11 or E@node[0-2]' test.ping
node02:
True
node01:
True
命令解释:匹配ip是"192.168.56.11"或者minionID 是"node0-2"的主机
8,Node groups方式需要写在Master配置文件里面,不需要重启salt-master服务就生效
对目标服务器分组有以下七种方式,这七种方式的标示符分别为:
G -- 针对 Grains 做单个匹配,例如:G@os:Ubuntu
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
实践
nodegroups:
group1: 'L@foo.domain.com,bar.domain.com,baz.domain.com and bl*.domain.com'
group2: 'G@os:Debian and foo.domain.com'
group3: 'G@os:Debian and N@group1'
有时候因为minion的版本问题
是要nodegroups会报错
如下
[DEBUG ] Passing on saltutil error. This may be an error in saltclient. 'retcode'
通过升级minion来解决
yum install https://repo.saltstack.com/yum/redhat/salt-repo-2017.7-1.el7.noarch.rpm #安装最新的源
升级minion客户端,重启minion就可以解决问题
yum install salt-minion -y
三、salt-target总结
总结
- 混合匹配不建议使用,看起来有些乱
- List模式在平时维护的时候用的少,但是在二次开发建议用Grains采集到数据,然后select拼接成list再调用后端api去执行
- 控制并发可以使用 batch size,简写 -b 如果是1就串行,也支持百分比如 -b 50%
[root@node01 ~]# salt "*" -b 1 test.ping
Executing run on [u'node01']
jid:
20181105100001647218
node01:
True
retcode:
0
Executing run on [u'node02']
jid:
20181105100001836864
node02:
True
retcode:
0
百分比使用方法
[root@node01 ~]# salt "*" -b 50% test.ping
Executing run on [u'node01']
jid:
20181105100024512404
node01:
True
retcode:
0
Executing run on [u'node02']
jid:
20181105100024709460
node02:
True
retcode:
0
至此结束,感谢明哥的大力支持。
更多精彩文章:Saltstack相关文章
官网文档:远程执行教程
- QQ精品交流群
-
- 微信公众号
-