Я пытаюсь, чтобы мой мастер отправил сценарий миниатюру, который поддерживает базу данных и некоторые файлы. Затем я хочу, чтобы мой мастер выполнил rsync файлы, созданные из сценария резервного копирования, поэтому я запускаю событие, когда резервное копирование завершено мастером. Мастер обрабатывает событие в реакторе и запускает Runner, который выполняет rsync.Сделать миньон подождать до тех пор, пока не закончится мастер-бегун
Я хочу, чтобы мой миньон подождал, пока Runner завершит и вернется, прежде чем он сообщит, что состояние «backup-complete» прошло успешно. В настоящее время миньон просто сообщает, что состояние выполнено успешно, не дожидаясь ответа Бегуна.
Моя текущая установка работает следующим образом:
Выполнить резервное копирование сценария на миньона с мастером
salt 'minion' state.sls backup
баловень вызывает событие, что резервная копия является полной (и возвращает immedieately)
backup-complete:
module.run:
- name: 'event.fire_master'
- fun: fire_master
- tag: backup/complete
- data: {"status":"Backup complete"}
Мастер имеет реактор, который перехватывает событие и вызывает Runner
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/полного» события вызванный мастером, но я не могу найти, как создавать eventlisteners на minion и как заставить его ждать. Другое решение, на которое я смотрел, это «salt.modules.cp.push», хотя документация предупреждает снова, используя это по соображениям безопасности.
Решение кажется слишком сложным для меня, поэтому, возможно, я приближаюсь к этому неправильно. Все мысли приветствуются.