我使用反应堆捕捉某些事件,我在/etc/salt/ reactor.conf中的看起来如下:
reactor:
- 'health/agent/update':
- salt://health-checks/reactor.sls在reactor.sls中-我想从代理获得一些数据,并且只对某些盐仆从(而不是盐主本身)运行一个特定的SLS。因此,我与tgt一起使用了下面的块,以确保它只运行在那些仆从上。基于文档在…,这看起来很好。在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 }}但是托管文件只在盐主上生成,而不是在任何tgt分支上生成。我遗漏了什么?什么是正确的方式来运行一个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...发布于 2015-12-07 10:02:51
我想我意识到了我所犯的错误。
首先,“Runner”应该用于您需要在主人而不是远程仆从上做的事情,正如Runner文档在…中明确指出的那样。
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 }}这将只在由update_server.sls过滤的服务器上运行tgt文件。
https://stackoverflow.com/questions/34081680
复制相似问题