【问题标题】:Make minion wait until Master runner complete让奴才等到大师赛跑者完成
【发布时间】:2014-09-24 08:46:52
【问题描述】:

我正试图让我的主人发送一个脚本给一个备份数据库和一些文件的仆从。然后,我希望我的 Master 同步从备份脚本创建的文件,因此我向 Master 触发备份完成的事件。 master 在 Reactor 中处理事件并启动执行 rsync 的 Runner。

我希望我的仆从等待 Runner 完成并返回,然后再报告状态“备份完成”成功。目前,minion 只是简单地报告状态执行成功,而无需等待 Runner 的响应。

我当前的设置是这样的:

从 master 上运行 minion 上的备份脚本

salt 'minion' state.sls backup

minion 触发备份完成的事件(并立即返回)

backup-complete:
  module.run:
     - name: 'event.fire_master'
     - fun: fire_master
     - tag: backup/complete
     - data: {"status":"Backup complete"}

master 有一个 Reactor 捕获事件并调用一个 Runner

backup_complete:
  runner.sync-backup.sync:
    - status: {{ data['data']['status'] }}

Runner然后执行rsync命令同步文件和目录并返回退出代码

def sync(status):
  command = "myrsyncscript.sh arg0 arg1"
  result = os.system(command) >> 8
  return result

我一直在考虑让 minion 等待并侦听 master 触发的“rsync/complete”事件,但我找不到如何在 minion 上创建事件侦听器,也找不到如何让它等待。我看过的另一个解决方案是“salt.modules.cp.push”,尽管出于安全原因,文档再次警告使用它。

解决方案对我来说似乎过于复杂,所以也许我以错误的方式接近这个问题。欢迎所有想法。

【问题讨论】:

    标签: salt-stack


    【解决方案1】:

    你可以在 minion 上运行一个反应器,但我很确定它只在自己的事件总线上监听。我不相信有一个命令可以通过事件总线从 Master 向 Minion 发送消息。

    我认为最好的办法是让 Master 上的跑步者通过 Salt 的正常执行模块对 Minion 执行调用。

    【讨论】:

      猜你喜欢
      • 2011-11-04
      • 2021-07-22
      • 1970-01-01
      • 2022-06-16
      • 2018-09-27
      • 2016-11-23
      • 2015-11-11
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多