Event和Reactor系统

本章节参考《SaltStack技术入门与实践》,感谢该书作者: 刘继伟、沈灿、赵舜东

  Event是SaltStack里面的对每个事件的一个记录,它相比job更加底层,Event能记录更加详细的Saltstack事件,比如Minion服务启动后请求Master签发证书或者证书校验的过程,都能通过Event事件来查看整个过程。Event也为扩展SaltStack提供了更加友好的接口。目前官方已经列出一些Event事件,包括认证,Minion连接Master,key认证,job等。大家可以去官网查看详细介绍。

1、查看Event事件

  可以通过以下命令查看Event事件,然后再开一个终端执行任务:

salt-run state.event pretty=True

  另一个终端执行salt ‘minion1‘ test.ping

 1 salt/event/new_client {
 2
 3     "_stamp": "2016-04-20T02:37:17.643259"
 4
 5 }
 6
 7 20160420103717664109 {
 8
 9     "_stamp": "2016-04-20T02:37:17.665541",
10
11     "minions": [
12
13         "minion1"
14
15     ]
16
17 }
18
19 salt/job/20160420103717664109/new {
20
21     "_stamp": "2016-04-20T02:37:17.666289",
22
23     "arg": [],
24
25     "fun": "test.ping",
26
27     "jid": "20160420103717664109",
28
29     "minions": [
30
31         "minion1"
32
33     ],
34
35     "tgt": "minion1",
36
37     "tgt_type": "glob",
38
39     "user": "root"
40
41 }
42
43 salt/job/20160420103717664109/ret/minion1 {
44
45     "_stamp": "2016-04-20T02:37:17.836600",
46
47     "cmd": "_return",
48
49     "fun": "test.ping",
50
51     "fun_args": [],
52
53     "id": "minion1",
54
55     "jid": "20160420103717664109",
56
57     "retcode": 0,
58
59     "return": true,
60
61     "success": true
62
63 }

View Code

这个时候可以看到每个Event事件的详细信息,包括job key校验等信息。

2、在master上配置Reactor

  在前面已经简单测试了event,接下来说说reactor系统,reactor是基于event的每个事件来做相应的操作(state)。我们可以理解reactor系统是一直监听着event,然后触发一些states操作。下面通过一个例子来讲解下reactor系统的适用场景吧。在我们日常大规模新机器上线或者初始化机器的时候,都希望minion第一次服务起来的时候就能完成所有的配置,这个时候需要自动完成minion的证书签发和根据不同业务完成不同states配置。恰好reactor就是干这个事情的。

在master配置文件里面添加如下内容

1 reactor:
2   - ‘salt/auth‘:    #监听证书认证event
3     - /srv/reactor/Minion.sls    #执行states sls文件
4   - ‘salt/minion/Minion/start‘:    #监听Minion start event
5     - /srv/reactor/auto.sls    #执行states sls文件

  关于event的定义,可以通过上一章节对event的了解根据需要监听的event来进行相应的配置,当然reactor里面对event的监听还支持正则表达式的方式,下面来看看这两个sates.sls文件吧:

1 cat /srv/reactor/Minion.sls
2 {% if ‘act‘ in data and data[‘act‘] == ‘pend‘ and data[‘id‘].startswith(‘Min‘)%}
3   key_accept:
4   wheel.key.accept:
5     - match: {{data[‘id‘]}}
6 {% endif %}

View Code

  这个文件主要是取event里面的数据,然后根据minion的ID进行证书签发,我们在state.sls文件里面引入了Jinja相关的语法,下面我们来看看进行初始的auto.sls吧:

 1 run_state:
 2   local.state.sls:
 3     - tgt: {{data[‘id‘]}}
 4     - arg:
 5     - test
 6 run_init:
 7   local.cmd.run:
 8     - tgt: {{data[‘id‘]}}
 9     - arg:
10     - echo initsok >> /tmp/cpis

View Code

  这个文件运行了两个module,一个是state.sls进行,一个是cmd.run。第一个run_state的意思跟手动针对minion运行state.sls test一样,第二个run_init表示针对minion运行cmd.run ‘echo initok‘ >> /tmp/cpis一样,下面我们来看下test这个sls文件,我这里只是一个简单的文件管理例子,大家在实际工作中应根据自己的需求去编写state sls文件:

cat /srv/salt/test.sls
/tmp/example:file.managed:- source: salt://example

  到这里,master端的reactor配置就算配置好了,下面我们需要重启master服务,这个时候可以新建一台minion.minion的ID,只要是以min字母开头即可,当minion服务启动后,minion会进行自动的初始配置了。

转载于:https://www.cnblogs.com/zuoyang/p/9231746.html

《SaltStack技术入门与实践》—— Event和Reactor系统相关推荐

  1. 《SaltStack技术入门与实践》—— 实践案例 中小型Web架构3 Memcached配置管理

    实践案例 <中小型Web架构>3 Memcached配置管理 本章节参考<SaltStack技术入门与实践>,感谢该书作者: 刘继伟.沈灿.赵舜东 Memcached介绍 Me ...

  2. 《SaltStack技术入门与实践》——执行结果处理

    执行结果处理 本章节参考<SaltStack技术入门与实践>,感谢该书作者: 刘继伟.沈灿.赵舜东 Return组件可以理解为SaltStack系统对执行Minion返回后的数据进行存储或 ...

  3. 《SaltStack技术入门与实践》—— Job管理

    Job管理 本章节参考<SaltStack技术入门与实践>,感谢该书作者: 刘继伟.沈灿.赵舜东 在SaltStack里面执行任何一个操作都会在Master上产生一个jid号.Minion ...

  4. 《SaltStack技术入门与实践》—— Grains

    Grains 本章节参考<SaltStack技术入门与实践>,感谢该书作者: 刘继伟.沈灿.赵舜东 前几章我们已经了解SaltStack各个组件以及通过一个案例去熟悉它的各种应用,从这章开 ...

  5. 《SaltStack技术入门与实践》—— 实践案例 中小型Web架构1 初始化和Haproxy

    实践案例 <中小型Web架构> 本章节参考<SaltStack技术入门与实践>,感谢该书作者: 刘继伟.沈灿.赵舜东 实践.实践.再实践,这是熟练掌握SaltStack的真理. ...

  6. 《SaltStack技术入门与实践》—— 实践案例 中小型Web架构2 Keepalived

    实践案例 <中小型Web架构>2 本章节参考<SaltStack技术入门与实践>,感谢该书作者: 刘继伟.沈灿.赵舜东(本章节中有好几处错误) Keepalived配置管理 首 ...

  7. 《SaltStack技术入门与实践》—— Renderer组件

    Renderer组件 本章节参考<SaltStack技术入门与实践>,感谢该书作者: 刘继伟.沈灿.赵舜东 前面我们已经提过使用Python语言编写state.sls文件.在SaltSta ...

  8. SaltStack技术入门与实践

    第1章 SaltStack入门 1.2.1 SaltStack软件依赖 SaltStack有两种消息系统,一种是REAT,一种是ZeroMQ,默认使用ZeroMQ. 软件依赖列表如下: ●Python ...

  9. 《Docker 技术入门与实践》-读书笔记二

    <Docker 技术入门与实践>-读书笔记一 <Docker 技术入门与实践>-读书笔记二 一.数据管理 用户在使用 Docker 的过程中,往往需要能查看容器内应用产生的数据 ...

最新文章

  1. tensorflow max_pooling
  2. ei会议论文录用但不参加会议_会议论文有录用通知吗
  3. jack对海量数据库的一些总结
  4. mysql 碎片率_MySQL数据碎片的整理和分析
  5. 【Python】如何判断一个字符串为空
  6. 数据规模恼同程,混合云飘来除杂症
  7. 繁体中文转换为简体中文的PHP类
  8. openstack trove实例状态转换条件--Mitaka版本
  9. 大学物理实验习题+答案/缓慢更新
  10. 计算机多媒体故障,多媒体教室设备常见故障及处理方法
  11. TCL学习心得(2)Tcl语言的语法
  12. 计算机word表格公开课ppt,制作Word表格公开课).ppt
  13. Zynga发布魔法三消手游《Harry Potter: Puzzles Spells》
  14. bat批处理文件夹内文件名的提取
  15. 云账户合法吗_云支付合法吗?
  16. GATK教程 / 体细胞短变异检测 (SNV+InDel)流程概览
  17. json文件批量转换xml
  18. Unity3D压缩和解压缩文件
  19. Android Qcom Display学习(五)
  20. 微信炸弹不在服务器,微信隐藏“沙雕”功能!炸弹+“便便”炸飞聊天框

热门文章

  1. Qlik Sense 字符串截取和拼接详解(Left、Right、)
  2. Esp8266上电时IO抖动解决方案
  3. csgo人工智能视频识别教程
  4. 常用的整流桥极其参数
  5. oracle数据库中选择桌面类和服务器类的区别
  6. 如何解决Camtasia下载安装时“2503”报错
  7. 离线地图制作器,一千多种地图一网打尽
  8. activemq源码笔记:main函数小结
  9. VS watch(监视)的技巧
  10. 语音识别之Python开发