我想在运行时将命令的输出从一个节点共享到另一个节点
salt "*" state.apply
。
我当前的解决方案涉及
mine.send
和mine.get
:
$ cat top.sls
base:
'master*':
- states.master*
'worker*':
- states.worker*
$ cat states/master.sls
save:
module.run:
- mine.send:
- foo
- mine_function: cmd.shell
- name: whoami
$ cat states/worker.sls
load:
file.managed:
- name: /tmp/a.sh
- contents: {{ salt['mine.get']("*", "foo").values() | first }}
首次运行时,“worker”节点出现以下错误:
worker-0:
Data failed to compile:
----------
Rendering SLS 'base:states.worker' failed: Jinja variable No first item, sequence was empty.; line 7
---
[...]
load:
file.managed:
- name: /tmp/a.sh
- contents: {{ salt['mine.get']("*", "foo").values() | first }}
---
第二次运行时,它按预期工作。
我假设问题是
mine.get
不等待mine.send
,但它尝试在创建模板时获取变量。
有什么建议吗?
谢谢
因为您正在研究不同小黄人身上发生的事件之间的关系,所以我相信您正在寻找
orchestrate
跑步者
在master上执行,给予其master级别的视图和控制 超过必要条件,例如状态顺序和条件。这允许 对于小兵之间的要求,例如命令状态的应用 不同的奴才不能同时发生,或者 如果一个 Minion 失败了,则停止所有 Minion 上的状态运行 状态。