salt Event和Reactor系统
salt Event说明
1
2Event是SaltStack里面的对每个事件的一个记录,它相比job更加底层,Event能记录更加详细的SaltStack事件,比如:Minion服务启动后请求Master签发证书或者证书校验的过程,都能通过Event事件来查看整个过程.
Event也为扩展SaltStack提供了更加友好的接口.目前官方已经列出一些Event事件,包括认证,Minion连接Master,key认证,job等查看event事件
1
[root@salt-master ~]# salt-run state.event pretty=True
salt Reactor系统
1
Reactor是基于Event的每个事件来做相应的操作(states).我们可以理解Reactor系统是一直监听着Event,然后触发一些States操作.例如:在我们日常大规模新机器上线或者初始化机器的时候,都希望Minion第一次服务起来的时候就能完成所有的配置,这个时候需要自动完成Minion的证书签发和根据不同的业务完成不同states配置.恰好Reactor就是干这个事情的.
master配置文件中添加如下内容
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34[root@salt-master ~]# vim /etc/salt/master
reactor:
- 'salt/auth': #监听证书认证event
- /mnt/data/salt.repo/reactor/minion.sls #执行states sls文件
- 'salt/minion/*/start': #监听Minion start event
- /mnt/data/salt.repo/reactor/auto.sls #执行states sls文件
[root@salt-master ~]# vim /mnt/data/salt.repo/reactor/minion.sls
{% if 'act' in data and data['act'] == 'pend' and data['id'].startswith('Min') %}
key_accept:
wheel.key.accept:
- match: {{ data['id'] }}
{% endif %}
[root@salt-master ~]# vim /mnt/data/salt.repo/reactor/auto.sls
run_state:
local.state.sls:
- tgt: {{ data['id'] }}
- arg:
- shencan
fun_init:
local.cmd.run:
- tgt: {{ data['id'] }}
- arg:
- echo initsok |tee /tmp/cpis
[root@salt-master ~]# vim /mnt/data/salt.repo/salt/base/shencan.sls
/tmp/example:
file.managed:
- source: salt://example
5. 重启salt-master服务
6. 启动一台新的minion客户端,并且minion配置文件的ID中必须以"Min"开头即可.当minion启动时会自动初始化配置了