Event是SaltStack里面的对每个事件的一个记录,它相比job更加底层,Event能记录更加详细的SaltStack事件,比如Minion服务启动后请求Master签发证书或者证书校验的过程,都能通过Event事件来查看整个过程。Event也为扩展SaltStack提供了更加友好的接口。目前官方已经列出一些Event事件,包括认证,Minion连接Master,key认证,job等。
 
1、查看Event事件
可以通过命令查看event事件,然后再打开一个终端执行任务
[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的更多相关文章

  1. 【python】详解事件驱动event实现

    [python]详解事件驱动event实现 所有的计算机程序都可以大致分为两类:脚本型(单次运行)和连续运行型(直到用户主动退出). 1.脚本型:脚本型的程序包括最早的批处理文件以及使用Python做 ...

  2. 事件驱动模式--Reactor

    原文:https://www.cnblogs.com/harvyxu/p/7498763.html 1 Reactor模型 Reactor模式是处理并发I/O比较常见的一种模式,用于同步I/O,中心思 ...

  3. 利用saltstack的event实现自己的功能

    saltstack的master上minion连接较多,下面这个程序可以分析哪些minion任务执行成功,哪些执行失败以及哪些没有返回. 脚本说明: 一.最先打印出本次任务的job id.comman ...

  4. saltStack的event接口通过mysql数据库接收SaltStack批量管理日志

    event是一个本地的ZeroMQ PUB Interface,event是一个开放的系统,用于发送信息通知salt或其他的操作系统.每个event都有一个标签.事件标签允许快速制定过滤事件.除了标签 ...

  5. 彻底搞懂彻底搞懂事件驱动模型 - Reactor

    在高性能网络技术中,大家应该经常会看到Reactor模型.并且很多开源软件中都使用了这个模型,如:Redis.Nginx.Memcache.Netty等. 刚开始接触时可能一头雾水,这到底是个什么东东 ...

  6. saltstack之salt event事件用法

    event是一个本地的ZeroMQ PUB Interface,event是一个开放的系统,用于发送信息通知salt或其他的操作系统.每个event都有一个标签.事件标签允许快速制定过滤事件.除了标签 ...

  7. Reactor模式

    对象行为类的设计模式,对同步事件分拣和派发.别名Dispatcher(分发器) Reactor模式是处理并发I/O比较常见的一种模式,用于同步I/O,中心思想是将所有要处理的I/O事件注册到一个中心I ...

  8. reactor模型框架图和流程图 libevent

    学习libevent有助于提升程序设计功力,除了网络程序设计方面外,libevent的代码里有很多有用的设计技巧和基础数据结构,比如信息隐藏.函数指针.c语言的多态支持.链表和堆等等,都有助于提升自身 ...

  9. 学习saltstack (四)

    一.salt常用命令 salt 该命令执行salt的执行模块,通常在master端运行,也是我们最常用到的命令 salt [options] '<target>' <function ...

随机推荐

  1. PHP常用的数学函数和字符串函数

    PHP常用函数总结 数学函数 1.abs(): 求绝对值 $abs = abs(-4.2); //4.2 数字绝对值数字 2.ceil(): 进一法取整 echo ceil(9.999); // 10 ...

  2. Assignment写作需要掌握的两种表达方式

    在正式开始写Assignment之前都会进行文献检索和整理,选择适合Assignment选题的文献资料进行阅读和引用.对于文献中与自己的观点高度相关的参考资料要如何具体引用,而不造成抄袭或者增加文章的 ...

  3. 吴裕雄--天生自然JAVA SPRING框架开发学习笔记:Spring DI(依赖注入)的实现方式属性注入和构造注入

    依赖注入(Dependency Injection,DI)和控制反转含义相同,它们是从两个角度描述的同一个概念. 当某个 Java 实例需要另一个 Java 实例时,传统的方法是由调用者创建被调用者的 ...

  4. linux_ssh用户枚举猜测

    新建一个用户名txt文档,写入常用的用户名 msfconsole use auxiliary/scanner/ssh/ssh_enumusers3

  5. Java web实现综合查询+SQL语句拼接

    首先展示图形界: 界面比较简单,但麻雀虽小五脏俱全.因为数据库只有六种数据类型,所以最多添加六个查询框. 测试以下问题: 删除方式是从上往下开始的,如果删除之后会有问题.(后续改进ing) 若干个并且 ...

  6. js对象属性名和属性值生成新数组时都作为属性值

    const obj = { id:1, name:'zhangsan', age:18 } const arr = []; Object.getOwnPropertyNames(obj).forEac ...

  7. 光纤卡网卡的区别以及HBA的常规定义-----引自百度百科

    在讨论这个问题的时候,需要先说清楚一个问题:我们知道,在早期的SAN存储系统中,服务器与交换机的数据传输是通过光纤进行的,因为服务器是把SCSI指令传输到存储设备上,不能走普通LAN网的IP协议,所以 ...

  8. 寒假day13

    今天看了计算机网络的相关面试题

  9. GUI(Graphical User Interface)

    译:用户和图形界面 GUI与程序交互的不同方式,包含3基本要素:输入,处理和输出. 常用GUI框架包括以下几种: wxPython Kivy Flexx PyQt Tkinter Pywin32 Py ...

  10. AttributeError: module 'selenium.webdriver.common.service' has no attribute 'Service'

    今天爬虫时需要使用到selenium, 使用pip install selenium进行安装. 可是一开始写程序就遇到了AttributeError: module 'selenium.webdriv ...