SaltStack匹配target-第六篇

摘要:
练习内容Salt远程执行中常见的目标选择模式1.通配符匹配2.正则表达式匹配3.列表支持4.增益匹配5.IP地址匹配6.混合匹配7.节点组远程执行格式目标是minionsalt“<target>”<function>〔arguments〕1.通配器匹配,支持min_ id〔root@linux-node1salt]#盐“*”测试.ping

练习内容

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

1.通配符匹配

2.正则表达式匹配

3.List支持

4.Grains匹配

5.IP地址匹配

6.混合匹配

7.Node groups

远程执行格式

target就是我们要选择的minion
salt '<target>' <function> [arguments]
一,通配符匹配,支持minon_id
[root@linux-node1 salt]# salt "*" test.ping
linux-node1.example.com:
    True
linux-node2.example.com:
    True
[root@linux-node1 salt]# salt "*node1*" test.ping
linux-node1.example.com:
    True
二,正则表达式,同样也支持在状态文件里面使用
[root@linux-node1 salt]# salt -E "linux-node[0-1].example.com" test.ping
linux-node1.example.com:
    True
[root@linux-node1 salt]# salt -E "linux-node[0-2].example.com" test.ping
linux-node1.example.com:
    True
linux-node2.example.com:
    True
三,List支持
[root@linux-node1 salt]# salt -L "linux-node1.example.com,linux-node2.example.com" "test.ping"
linux-node2.example.com:
    True
linux-node1.example.com:
    True
四,Grains匹配
[root@linux-node1 salt]# salt -G 'os:CentOS' test.ping
linux-node1.example.com:
    True
linux-node2.example.com:
    True
[root@linux-node1 salt]# salt -G 'cpuarch:x86_64' test.ping
linux-node1.example.com:
    True
linux-node2.example.com:
    True
五,IP地址匹配
root@linux-node1 salt]# salt -S "192.168.56.0/255.255.255.0" test.ping  #注意不支持 255.255.255.0子网掩码写法
No minions matched the target. No command was sent, no jid was assigned.
ERROR: No return received
[root@linux-node1 salt]# salt -S "192.168.56.0/24" test.ping
linux-node1.example.com:
    True
linux-node2.example.com:
    True
[root@linux-node1 salt]# salt -S "192.168.56.11" test.ping
linux-node1.example.com:
    True
六,混合匹配(不建议使用,看起来有些乱)
[root@linux-node1 salt]# salt -C 'S@192.168.56.11 or E@linux-node[0-2].example.com' test.ping
linux-node1.example.com:
    True
linux-node2.example.com:
    True
七,Node groups方式需要写在Master配置文件里面,不需要重启salt-master服务就生效

对目标服务器分组有以下七种方式,这七种方式的标示符分别为:

  1. G -- 针对 Grains 做单个匹配,例如:G@os:Ubuntu
  2. E -- 针对 minion 针对正则表达式做匹配,例如:E@webd+.(dev|qa|prod).loc
  3. P -- 针对 Grains 做正则表达式匹配,例如:P@os:(RedHat|Fedora|CentOS)
  4. L -- 针对 minion 做列表匹配,例如:L@minion1.example.com,minion3.domain.com or bl*.domain.com
  5. I -- 针对 Pillar 做单个匹配,例如:I@pdata:foobar
  6. S -- 针对子网或是 IP 做匹配,例如:S@192.168.1.0/24 or S@192.168.1.100
  7. 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

总结

1.混合匹配不建议使用,看起来有些乱

2.List模式在平时维护的时候用的少,但是在二次开发建议用Grains采集到数据,然后select拼接成list再调用后端api去执行

3.控制并发可以使用 batch size,简写 -b 如果是1就串行,也支持百分比如 -b 50%

[root@linux-node1 salt]# salt '*' -b 1 test.ping
Executing run on ['linux-node2.example.com']
linux-node2.example.com:
    True
retcode:
    0
Executing run on ['linux-node1.example.com']
linux-node1.example.com:
    True
retcode:
    0

百分比使用方法

[root@linux-node1 salt]# salt '*' -b 50%  test.ping
Executing run on ['linux-node2.example.com']
linux-node2.example.com:
    True
retcode:
    0
Executing run on ['linux-node1.example.com']
linux-node1.example.com:
    True
retcode:
    0

附:英文参考文档

https://www.unixhot.com/docs/saltstack/topics/tutorials/modules.html#target

https://www.unixhot.com/docs/saltstack/topics/targeting/index.html

免责声明:文章转载自《SaltStack匹配target-第六篇》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Windows App开发之集成设置、帮助、搜索和共享python3 爬虫之爬取安居客二手房资讯(第一版)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

nmon:linux性能监控工具

nmon开源性能监控工具,用于监控linux系统的资源消耗信息,并能把结果输出到文件中,然后通过nmon_analyser工具产生数据文件与图形化结果。 一、安装软件 下载nmon安装包:http://nmon.sourceforge.net/pmwiki.php?n=Site.Download选择适合自己系统的版本centos7_x86_64适合的最新...

Linux内核时间管理(二)——jiffies与jiffies_64释疑

    Linux内核中定义了jiffies变量来记录从系统启动到当前时刻系统时钟所产生的tick数。jiffies变量是一个无符号整型数值,即unsigned long类型。它的声明如下(在 include/linux/jiffies.h 中): extern u64 __jiffy_data jiffies_64;     由此可见,jiffies变量...

Deepin/UOS/debian/Ubuntu/Linux下搭建pyqt5开发环境—基于Pycharm

前言 由于Deepin/UOS/debian/Ubuntu自带python,所以不用管Python环境 默认你已经下好了并安装了pycharm 本教程实验环境 系统版本:deepin 社区版 20.2.4 python版本:python 3.7.3 pycharm版本:PyCharm 2021.2.1 (Community Edition) 一、安装 py...

基于MCP2515的Linux CAN总线驱动程序设计(一)

基于MCP2515的Linux CAN总线驱动程序设计(一) 作者:李老师,华清远见嵌入式学院讲师。 1.前言 CAN(Controller Area Network)总线,即控制器局域网总线,是一种有效支持分布式控制或实时控制的串行通信网络。由于其高性能、高可靠性、及独特的设计和适宜的价格而广泛应用于工业现场控制、智能楼宇、医疗器械、交通工具以及传感器等...

LINUX系统配置

LINUX系统配置 Linux 安装jdk方法; Linux Tomcat 安装与配置 Linux redis 安装与配置 (例1) Linux redis安装配置(例2) NGINX 安装 Linux 安装jdk方法 JDK安装 tar.gz为解压后就可使用的版本,这里我们将jdk-7u3-linux-i586.tar.g...

Windows下QtCreator使用CMake编译GUI程序

一、前言 为什么要用 CMake 来构建 Qt 的项目呢?Qt 不是有 qmake 吗?这样,岂不是多此一举?其实,应用 CMake 来构建项目还是非常有必要的,特别是当你的项目涉及到很多第三方库的时候,CMake 的优势非常突出。 Qt5.15.2 在之前选择安装模块的时候,自动帮我们勾选了 CMake_64 模块,你也可以另外选择勾选 CMake_32...