我想要的是由Minion调用的类似RPC的行为放入某种脚本,然后可以由任何(非Salt,非Python)应用程序和服务调用:
我知道我可以使用salt-call和salt.modules.event.fire_master模块向主人发送事件.
那我该如何等待响应事件呢?
如何确保其他Minions无法在事件总线上看到响应事件(从主人发送的所有事件都是公开的,并且过滤发生在Minion端)?我考虑过gpg渲染器,但这可能太复杂了 - 需要有一种方法,因为Master需要将敏感的Pillar数据发送给具有类似要求的Minions.
小智 1
我也被这个问题困扰,但我设法偶然发现了你需要什么。答案就在 salt 的恰当名称中:saltmod.wait_for_event
但如果您注意到该状态被识别为仅适用于 salt-master。这实际上意味着它可以用在 minion 上,但你必须将node='master'kwarg 更改为 node='minion'。下面是一个示例状态文件,它发送一个事件(触发反应器来激发运行者),然后等待 60 秒让 salt-master 将事件发送回 Minion(运行者在成功运行时发回该事件):
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
307 次 |
| 最近记录: |