2014-09-22 6 views
1

Я пытаюсь, чтобы мой мастер отправил сценарий миниатюру, который поддерживает базу данных и некоторые файлы. Затем я хочу, чтобы мой мастер выполнил 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», хотя документация предупреждает снова, используя это по соображениям безопасности.

Решение кажется слишком сложным для меня, поэтому, возможно, я приближаюсь к этому неправильно. Все мысли приветствуются.

ответ

0

Вы можете запустить реактор на миньоне, но я уверен, что он слушает только свою собственную автобусную шину. Я не верю, что есть команда отправить сообщение от Мастера на Minion по шине событий.

Я думаю, что лучше всего, чтобы ваш бегун на Мастере выполнял вызов на Minion через нормальные исполняемые модули Солта.

Смежные вопросы