在Master上触发事件并等待"响应事件"在Salt Minion

时间:2018-03-13 09:40:18

标签: salt-stack

我想要的是由Minion调用的类似RPC的行为放入某种脚本,然后可以由任何(非Salt,非Python)应用程序和服务调用:

  • 在Master上触发事件(有效负载对应于命令行参数)
  • Reactor系统接管,处理事件并(取决于事件的发送者和有效负载)发送响应事件。
    • 响应事件可能包含敏感的有效负载,并且可能不会被任何其他小兵看到(或至少被解密)
  • Minion收到回复活动

我知道我可以使用salt-callsalt.modules.event.fire_master模块向主人发送事件。

那么我如何等待参与响应事件?

我如何确保其他Minions无法在事件总线上看到响应事件(afaik从Master发送的所有事件都是公开的,并且过滤发生在Minion端)?我考虑过gpg渲染器,但这可能太复杂了 - 需要有一种方法,因为Master需要将敏感的Pillar数据发送给具有类似要求的Minions。

1 个答案:

答案 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