SaltStack-Master获取Minion状态的多种途径 target [六]

2017年12月15日09:23:29 发表评论 1,293 views
广告也精彩

Saltstack系列第六篇,上一篇说道将Salt获取的信息,自动收集到Mysql中,那么今天我们就学习下,Salt-Minion上如何获取你要写信息,或者叫状态,我们对这种状态简称“Target”。

一、Salt远程执行中目标选择常用的模式

  1. 通配符匹配
  2. 正则表达式匹配
  3. List支持
  4. Grains匹配
  5. IP地址匹配
  6. 混合匹配
  7. 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精品交流群
  • weinxin
  • 微信公众号
  • weinxin
广告也精彩
admin

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: