最近在学习saltstack的reactor模块,由于在业务上没有有关reactor的需求。这里只是举个例子,方便将来参考使用。


原理:reactor分为两部分:tag和sls。reactor去匹配这个tag(event的tag),匹配到则执行对应的sls文件。这个需要结合event。其实这个类似于zabbix的triggers。


在配置文件目录创建master.d/reactor.conf

reactor:

  - 'salt/job/*/ret/*':

    - /srv/reactor/start.sls

重启master


创建/srv/reactor/start.sls

{% if data['id'] == '192.168.110.133' %}

cmd_run:

  cmd.cmd.run:(这里写的是salt可执行模块,modules里的模块)

    - tgt: '192.168.110.132'

    - arg:

      - /bin/touch /tmp/demo

{% endif %}


触发事件:

salt '192.168.110.133' test.ping
没意外的话,会在192.168.110.132上创建/tmp/demo文件


关于event的信息请参考event文章


参考:

http://docs.saltstack.com/en/latest/topics/reactor/

http://vbyron.com/blog/infrastructure-management-saltstack-part-3-reactor-events/