SaltStack匹配target-第六篇
练习内容
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服务就生效
对目标服务器分组有以下七种方式,这七种方式的标示符分别为:
- 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
总结
1.混合匹配不建议使用,看起来有些乱
2.List模式在平时维护的时候用的少,但是在二次开发建议用Grains采集到数据,然后select拼接成list再调用后端api去执行
3.控制并发可以使用 batch size,简写 -b 如果是1就串行,也支持百分比如 -b 50%
[root@linux-node1 salt]# salt '*' -b test.ping Executing run on ['linux-node2.example.com'] linux-node2.example.com:
True
retcode: Executing run on ['linux-node1.example.com'] linux-node1.example.com:
True
retcode:
百分比使用方法
[root@linux-node1 salt]# salt '*' -b % test.ping Executing run on ['linux-node2.example.com'] linux-node2.example.com:
True
retcode: Executing run on ['linux-node1.example.com'] linux-node1.example.com:
True
retcode:
附:英文参考文档
https://www.unixhot.com/docs/saltstack/topics/tutorials/modules.html#target
https://www.unixhot.com/docs/saltstack/topics/targeting/index.html
SaltStack匹配target-第六篇的更多相关文章
- RabbitMQ学习总结 第六篇:Topic类型的exchange
目录 RabbitMQ学习总结 第一篇:理论篇 RabbitMQ学习总结 第二篇:快速入门HelloWorld RabbitMQ学习总结 第三篇:工作队列Work Queue RabbitMQ学习总结 ...
- Python之路【第六篇】:socket
Python之路[第六篇]:socket Socket socket通常也称作"套接字",用于描述IP地址和端口,是一个通信链的句柄,应用程序通常通过"套接字&quo ...
- “MVC+Nhibernate+Jquery-EasyUI” 信息发布系统 第六篇(图片新闻的添加以及带分页的静态页的生成)
“MVC+Nhibernate+Jquery-EasyUI” 信息发布系统 第六篇(图片新闻的添加以及带分页的静态页的生成) 一.这篇文章主要是要实现:图片新闻的添加,无刷新图片的上传,以及添加新闻静 ...
- ElasticSearch入门 第六篇:复合数据类型——数组,对象和嵌套
这是ElasticSearch 2.4 版本系列的第六篇: ElasticSearch入门 第一篇:Windows下安装ElasticSearch ElasticSearch入门 第二篇:集群配置 E ...
- SaltStack 入门到精通第二篇:Salt-master配置文件详解
SaltStack 入门到精通第二篇:Salt-master配置文件详解 转自(coocla):http://blog.coocla.org/301.html 原本想要重新翻译salt-mas ...
- Mysql优化(出自官方文档) - 第六篇
Mysql优化(出自官方文档) - 第六篇 目录 Mysql优化(出自官方文档) - 第六篇 Optimizing Subqueries, Derived Tables, View Reference ...
- 解剖SQLSERVER 第十六篇 OrcaMDF RawDatabase --MDF文件的瑞士军刀(译)
解剖SQLSERVER 第十六篇 OrcaMDF RawDatabase --MDF文件的瑞士军刀(译) http://improve.dk/orcamdf-rawdatabase-a-swiss-a ...
- 解剖SQLSERVER 第六篇 对OrcaMDF的系统测试里避免regressions(译)
解剖SQLSERVER 第六篇 对OrcaMDF的系统测试里避免regressions (译) http://improve.dk/avoiding-regressions-in-orcamdf-b ...
- Python之路【第十六篇】:Django【基础篇】
Python之路[第十六篇]:Django[基础篇] Python的WEB框架有Django.Tornado.Flask 等多种,Django相较与其他WEB框架其优势为:大而全,框架本身集成了O ...
- 第六篇 :微信公众平台开发实战Java版之如何自定义微信公众号菜单
我们来了解一下 自定义菜单创建接口: http请求方式:POST(请使用https协议) https://api.weixin.qq.com/cgi-bin/menu/create?access_to ...
随机推荐
- 零基础在Linux服务器上部署javaweb项目
本教程使用的工具下载链接:http://pan.baidu.com/s/1sl1qz2P 密码:43pj 一.安装JDK 1.首先要查看服务器的系统版本,是32位还是64位 #getconf LONG ...
- HDU_5532_Almost Sorted Array
Almost Sorted Array Time Limit: 4000/2000 MS (Java/Others) Memory Limit: 262144/262144 K (Java/Ot ...
- Linux命令(补充)
1.查看已启动服务的端口: netstat -tulnp |grep 80 ss -tulnp|grep 80 2.查看全部已启动的端口:netstat -tulnp 3.查看当前目录:pwd 4.关 ...
- springboot跨域处理
/** * @author 657642432@qq.com * 跨域处理 */ @Configuration public class CorsConfig { @Bean public Filte ...
- awk经常使用字符串处理函数
gsub(regexp, replacement [, target]) Search target for all of the longest, leftmost, nonoverlapping ...
- 解析button和input type=”button”的区别
一.定义和用法 <button> 标签定义的是一个按钮. 在 button 元素内部,可以放置文本或图像.这是<button>与使用 input 元素创建的按钮的不同之处. 二 ...
- SQL Server 2008 sa用户可以登录,Windows身份验证无法登录
安装SQL Server 2008时一切正常,但是在启动时出现了问题.若使用SQL Server 身份验证,选择sa用户可以登录到系统,并正常使用.但是,若使用Windows身份验证,提示用户名或密码 ...
- 模块讲解----json模块(跨平台的序列化与反序列化)
一.json的特点 1.只能处理简单的可序列化的对象:(字典,列表,元祖) 2.json支持不同语言之间的数据交互:(python - go,python - java) 二.使用场景 1.玩 ...
- C++实现不能继承的类
实现一个不能继承的类,这在Java等语言中是很好实现的,被final关键字修饰的类不能被继承. C++中没有类似的关键字,须自己实现.一般有如下两种方法: 1.设置构造方法与析构方法为私有 class ...
- C++学习笔记--名称空间
名称空间是为了更好的控制名称的作用域,以管理不同的类库,避免发生冲突. 1.创建名称空间 如下,使用namespace关键字创建了pers和debts两个名称空间. #ifndef NAMESP_H_ ...