SaltStack事件驱动 – event reactor
[root@master ~]# salt-run state.event pretty=True
{
"_stamp": "2019-09-26T08:01:22.343862",
"minions": [
"master"
]
}
salt/job//new {
"_stamp": "2019-09-26T08:01:22.354693",
"arg": [],
"fun": "test.ping",
"jid": "",
"minions": [
"master"
],
"missing": [],
"tgt": "master",
"tgt_type": "glob",
"user": "root"
}
salt/job//ret/master {
"_stamp": "2019-09-26T08:01:22.476802",
"cmd": "_return",
"fun": "test.ping",
"fun_args": [],
"id": "master",
"jid": "",
"retcode": ,
"return": true,
"success": true
}
2、reactor配置
[root@master ~]# cat /etc/salt/master.d/reactor.conf #在master节点中配置reactor的配置信息
reactor:
- 'minion_start': #匹配event中事件tag
- /srv/reactor/touch.sls #minion启动是应用一个state文件
[root@master ~]#
[root@master ~]#
[root@master ~]# cat /srv/reactor/touch.sls
touch_temp:
local.state.sls:
- tgt: {{ data['id'] }}
- arg:
- touch_abc
[root@master ~]#
[root@master ~]#
[root@master ~]# cat /srv/salt/base/touch_abc.sls
touch_abc:
file.append:
- name: /tmp/abc.txt
- text:
- 'this is append line1'
- 'this is append line2' [root@master ~]#
reactor SLS文件
与salt reactor SLS有所以类似的地方。salt state和salt reator SLS文件都是使用YAML和Jinja写的,不过因为它们语法有些不同,且用作不同的目的,它们应该放在不同的目录中(如reactor是在/srv/salt/reactors目录)。
reactor 的类型
salt reactor有如下几种类型:
- 远程执行: 在目标minions运行一个执行模块。这个可以通过调用salt命令来完成(包括应用state或highstate)
- Salt Runners: 通过使用salt-run调用的任务。如HTTP runnner可以触发webhook。
- Wheel: Wheel命令管理你的salt环境,完成如接收密钥和更新配置设置的任务。
远程执行
这种类型的reactor是直接与salt执行模块连接。如果你考虑使用salt命令来运行一个远程执行模块,你应该知道salt命令必须包含三个信息:
- 目标
- 函数
- 参数
salt reactor中的远程执行也同样需要这三个信息:
<section id>:
local.<function>:
- tgt: <target>
- arg:
<arguments>
注意执行模块必须以local为前缀。我们来看在命令行安装一个包是怎样的:
、命令行
salt 'myminion' pkg.install cowsay 、在reactor SLS文件中,应该是按如下配置:
install cowsay on myminion:
local.pkg.install:
- tgt: 'myminion'
- arg:
- cowsay
SaltStack事件驱动 – event reactor的更多相关文章
- 【python】详解事件驱动event实现
[python]详解事件驱动event实现 所有的计算机程序都可以大致分为两类:脚本型(单次运行)和连续运行型(直到用户主动退出). 1.脚本型:脚本型的程序包括最早的批处理文件以及使用Python做 ...
- 事件驱动模式--Reactor
原文:https://www.cnblogs.com/harvyxu/p/7498763.html 1 Reactor模型 Reactor模式是处理并发I/O比较常见的一种模式,用于同步I/O,中心思 ...
- 利用saltstack的event实现自己的功能
saltstack的master上minion连接较多,下面这个程序可以分析哪些minion任务执行成功,哪些执行失败以及哪些没有返回. 脚本说明: 一.最先打印出本次任务的job id.comman ...
- saltStack的event接口通过mysql数据库接收SaltStack批量管理日志
event是一个本地的ZeroMQ PUB Interface,event是一个开放的系统,用于发送信息通知salt或其他的操作系统.每个event都有一个标签.事件标签允许快速制定过滤事件.除了标签 ...
- 彻底搞懂彻底搞懂事件驱动模型 - Reactor
在高性能网络技术中,大家应该经常会看到Reactor模型.并且很多开源软件中都使用了这个模型,如:Redis.Nginx.Memcache.Netty等. 刚开始接触时可能一头雾水,这到底是个什么东东 ...
- saltstack之salt event事件用法
event是一个本地的ZeroMQ PUB Interface,event是一个开放的系统,用于发送信息通知salt或其他的操作系统.每个event都有一个标签.事件标签允许快速制定过滤事件.除了标签 ...
- Reactor模式
对象行为类的设计模式,对同步事件分拣和派发.别名Dispatcher(分发器) Reactor模式是处理并发I/O比较常见的一种模式,用于同步I/O,中心思想是将所有要处理的I/O事件注册到一个中心I ...
- reactor模型框架图和流程图 libevent
学习libevent有助于提升程序设计功力,除了网络程序设计方面外,libevent的代码里有很多有用的设计技巧和基础数据结构,比如信息隐藏.函数指针.c语言的多态支持.链表和堆等等,都有助于提升自身 ...
- 学习saltstack (四)
一.salt常用命令 salt 该命令执行salt的执行模块,通常在master端运行,也是我们最常用到的命令 salt [options] '<target>' <function ...
随机推荐
- PHP常用的数学函数和字符串函数
PHP常用函数总结 数学函数 1.abs(): 求绝对值 $abs = abs(-4.2); //4.2 数字绝对值数字 2.ceil(): 进一法取整 echo ceil(9.999); // 10 ...
- Assignment写作需要掌握的两种表达方式
在正式开始写Assignment之前都会进行文献检索和整理,选择适合Assignment选题的文献资料进行阅读和引用.对于文献中与自己的观点高度相关的参考资料要如何具体引用,而不造成抄袭或者增加文章的 ...
- 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring DI(依赖注入)的实现方式属性注入和构造注入
依赖注入(Dependency Injection,DI)和控制反转含义相同,它们是从两个角度描述的同一个概念. 当某个 Java 实例需要另一个 Java 实例时,传统的方法是由调用者创建被调用者的 ...
- linux_ssh用户枚举猜测
新建一个用户名txt文档,写入常用的用户名 msfconsole use auxiliary/scanner/ssh/ssh_enumusers3
- Java web实现综合查询+SQL语句拼接
首先展示图形界: 界面比较简单,但麻雀虽小五脏俱全.因为数据库只有六种数据类型,所以最多添加六个查询框. 测试以下问题: 删除方式是从上往下开始的,如果删除之后会有问题.(后续改进ing) 若干个并且 ...
- js对象属性名和属性值生成新数组时都作为属性值
const obj = { id:1, name:'zhangsan', age:18 } const arr = []; Object.getOwnPropertyNames(obj).forEac ...
- 光纤卡网卡的区别以及HBA的常规定义-----引自百度百科
在讨论这个问题的时候,需要先说清楚一个问题:我们知道,在早期的SAN存储系统中,服务器与交换机的数据传输是通过光纤进行的,因为服务器是把SCSI指令传输到存储设备上,不能走普通LAN网的IP协议,所以 ...
- 寒假day13
今天看了计算机网络的相关面试题
- GUI(Graphical User Interface)
译:用户和图形界面 GUI与程序交互的不同方式,包含3基本要素:输入,处理和输出. 常用GUI框架包括以下几种: wxPython Kivy Flexx PyQt Tkinter Pywin32 Py ...
- AttributeError: module 'selenium.webdriver.common.service' has no attribute 'Service'
今天爬虫时需要使用到selenium, 使用pip install selenium进行安装. 可是一开始写程序就遇到了AttributeError: module 'selenium.webdriv ...