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 20190926040122342821 { "_stamp": "2019-09-26T08:01:22.343862", "minions": [ "master" ] } salt/job/20190926040122342821/new { "_stamp": "2019-09-26T08:01:22.354693", "arg": [], "fun": "test.ping", "jid": "20190926040122342821", "minions": [ "master" ], "missing": [], "tgt": "master", "tgt_type": "glob", "user": "root" } salt/job/20190926040122342821/ret/master { "_stamp": "2019-09-26T08:01:22.476802", "cmd": "_return", "fun": "test.ping", "fun_args": [], "id": "master", "jid": "20190926040122342821", "retcode": 0, "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为前缀。我们来看在命令行安装一个包是怎样的:
1、命令行 salt 'myminion' pkg.install cowsay 2、在reactor SLS文件中,应该是按如下配置: install cowsay on myminion: local.pkg.install: - tgt: 'myminion' - arg: - cowsay