在节点之间共享命令输出

问题描述 投票:0回答:1

我想在运行时将命令的输出从一个节点共享到另一个节点

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
,但它尝试在创建模板时获取变量。

有什么建议吗?

谢谢

salt-stack salt
1个回答
0
投票

因为您正在研究不同小黄人身上发生的事件之间的关系,所以我相信您正在寻找

orchestrate
跑步者

在master上执行,给予其master级别的视图和控制 超过必要条件,例如状态顺序和条件。这允许 对于小兵之间的要求,例如命令状态的应用 不同的奴才不能同时发生,或者 如果一个 Minion 失败了,则停止所有 Minion 上的状态运行 状态。

© www.soinside.com 2019 - 2024. All rights reserved.