我正在使用reactor来捕获某些事件,我在/etc/salt/master.d中的reactor.conf看起来像:
reactor:
- 'health/agent/update':
- salt://health-checks/reactor.sls
在reactor.sls中 - 我想从代理获取一些数据并仅在某些盐爪上运行某个SLS(不在salt master本身上)。所以我使用跟随块和tgt
来确保它只在那些minions上运行。根据文档at,这看起来很好。在update_server.sls中,我生成了一些托管文件。
{% set event_data = data.data %}
{% set target_server_name = data.data.server_name %}
'update server states':
runner.state.orchestrate:
- tgt: {{ target_server_name }}
- mods: health-checks/update_server
- pillar:
event_data: {{ event_data }}
但是托管文件只在salt-master上生成,而不是在tgt
个minions上生成。我错过了什么?什么是在目标爪牙上运行sls并在那里产生预期结果的正确方法?
我也尝试过使用salt.state但导致错误,代码
salt.state:
- tgt: '*{{ target_server_name }}*'
和错误:
2015-12-04 06:37:24,467 [salt.utils.process][INFO ][17924] Process <class 'salt.utils.reactor.Reactor'> (17989) died with exit status None, restarting...
答案 0 :(得分:0)
我想我意识到我正在做的错误。
首先&#34;跑步者&#34;应该用于你需要在主人而不是远程小兵身上做的事情,如Runner文档at中明确规定的那样:
Salt runners work similarly to Salt execution modules however they execute on the Salt master itself instead of remote Salt minions.
对我有用的是:
'update server states':
local.state.sls:
- tgt: '*{{ target_server_name }}*'
- arg:
- 'health-checks/update_server'
- kwarg:
pillar:
event_data: {{ event_data }}
这将仅在由tgt