我想要的是由Minion调用的类似RPC的行为放入某种脚本,然后可以由任何(非Salt,非Python)应用程序和服务调用:
我知道我可以使用salt-call
和salt.modules.event.fire_master
模块向主人发送事件。
那么我如何等待参与响应事件?
我如何确保其他Minions无法在事件总线上看到响应事件(afaik从Master发送的所有事件都是公开的,并且过滤发生在Minion端)?我考虑过gpg
渲染器,但这可能太复杂了 - 需要有一种方法,因为Master需要将敏感的Pillar数据发送给具有类似要求的Minions。
答案 0 :(得分:1)
我在这个问题上也遇到了麻烦,但是我设法迷失了您的需求。答案以salt的恰当命名为:saltmod.wait_for_event
但是,如果您会注意到,仅将盐主标记的状态标识为预期。这实际上意味着它可以在小仆上使用,但是您必须将node='master'
kwarg更改为node ='minion'。这是一个示例状态文件,该文件发送一个事件(触发反应堆触发跑步者),然后等待60秒,让盐大师将事件发送回小兵(跑步者成功运行后将其发送回): / p>
salt/custom/trigger_runner:
event.send
wait_for_event_runner_return:
salt.wait_for_event:
- name: salt/custom/runner_complete
- timeout: 60
- id_list:
- {{ grains.id }}
- node: minion