让小兵等到主跑步者完成

时间:2014-09-22 10:15:10

标签: salt-stack

我试图让我的主人向一个支持数据库和一些文件的minion发送一个脚本。然后,我希望我的主人对从备份脚本创建的文件进行rsync,这样我就可以向主服务器发送备份已完成的事件。主服务器在Reactor中处理事件并启动执行rsync的Runner。

我希望我的小兵在报告状态“备份完成”之前等待Runner完成并返回。那是成功的。目前,minion只是报告状态执行成功而不等待Runner的响应。

我目前的设置是这样的:

从主人

运行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"}

主人有一个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

我一直在考虑让小兵等着,然后听一个&rs?rsync / complete'由主人触发的事件,但我找不到如何在minion上创建事件监视器,也不知道如何让它等待。我看过的另一个解决方案是“salt.modules.cp.push'虽然出于安全原因,文档再次警告使用它。

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

1 个答案:

答案 0 :(得分:0)

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

我认为你最好的选择是让你的跑步者通过Salt的正常执行模块在Master上执行一次调用。

相关问题