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 ...
随机推荐
- monkey命令详解《转载》
monkey命令详解: https://blog.csdn.net/a136332462/article/details/76014412
- BZOJ:2243: [SDOI2011]染色
题解: 树剖,线段树维护区间颜色段数 记录两端点的颜色,做到O(1)合并 问题: 非递归建树实现 #include<iostream> #include<cstdio> #in ...
- BZOJ:1878: [SDOI2009]HH的项链
题解:解法一:莫队 解法二:按区间左端点排序,让区间内最左边的贝壳对答案产生贡献,树状数组维护,转移对答案产生贡献的贝壳位置 #include<iostream> #include< ...
- python的库有多少个?python有多少个模块?
这里列举了大概500个左右的库: ! Chardet字符编码探测器,可以自动检测文本.网页.xml的编码. colorama主要用来给文本添加各种颜色,并且非常简单易用. Prettytable主 ...
- 51Nod-1072-威佐夫游戏
有2堆石子.A B两个人轮流拿,A先拿.每次可以从一堆中取任意个或从2堆中取相同数量的石子,但不可不取.拿到最后1颗石子的人获胜.假设A B都非常聪明,拿石子的过程中不会出现失误.给出2堆石子的数量, ...
- Excel----考勤表制作自动更新日期
起初效果 1. 我们首先输入年月日,如图 选择日期 按`ctrl+1` 来调出下图: 2. 数据填充 3.设置星期 点击1下面的单元格
- react动态生成列表
在组件的render函数中遍历数组menus[]并且要return返回虚拟Dom对象. render() { return createPortal( this.state.visible & ...
- 读书笔记 - js高级程序设计 - 第三章 基本概念
启用严格模式 "use strict" 这是一个 pragma 编译指示 让编码意图更清晰 是一个重要原则 5种简单数据类型 Undefined Null Boolean Num ...
- SpringCloud学习之手把手教你用IDEA搭建入门项目(一)
SpringCloud简单搭建 jdk:1.8开发工具:IDEA注:需要了解springcloud 1.创建最简单的Maven项目 1)开始创建一个新的项目 2)创建一个空模板的maven项目,用 ...
- iOS 中的延时操作方法
1. dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_q ...