我想讓我的主人發送一個腳本給備份數據庫和一些文件的僕從。然後,我希望我的主服務器rsync從備份腳本創建的文件,以便我將備份完成的事件發送給主服務器。主人在Reactor中處理事件並啓動執行rsync的Runner。讓僕從等待,直到主賽跑手完成
我希望我的僕從在報告狀態'backup-complete'成功之前等待Runner完成並返回。目前,僕從只是簡單地報告說,狀態成功執行沒有等待亞軍的反應。
我目前的設置是這樣的:
運行備份腳本的僕從從主
salt 'minion' state.sls backup
附庸觸發一個事件,備份完成(和immedieately返回)
backup-complete:
module.run:
- name: 'event.fire_master'
- fun: fire_master
- tag: backup/complete
- data: {"status":"Backup complete"}
主人有一個反應器,捕捉事件並呼籲跑步者
backup_complete:
runner.sync-backup.sync:
- status: {{ data['data']['status'] }}
的亞軍然後執行一個rsync命令同步的文件和目錄,並返回退出代碼
def sync(status):
command = "myrsyncscript.sh arg0 arg1"
result = os.system(command) >> 8
return result
我一直在想有僕從等待和傾聽的「rsync的/完整的」事件由主人觸發,但我無法找到如何創建事件偵聽器的奴才,也沒有如何讓它等待。我看過的另一個解決方案是'salt.modules.cp.push',雖然文檔出於安全原因再次使用它。
該解決方案似乎對我來說過於複雜,所以也許我正在接近這個錯誤的方式。歡迎所有的想法。