마스터가 데이터베이스 및 일부 파일을 백업하는 미니언에게 스크립트를 보내려고합니다. 그런 다음 마스터가 백업 스크립트에서 생성 된 파일을 rsync하여 백업이 마스터에게 완료된 이벤트를 발생 시키길 원합니다. 마스터는 Reactor에서 이벤트를 처리하고 rsync를 수행하는 러너를 시작합니다.마스터 러너가 완료 될 때까지 미니언을 대기로 만듭니다.
내 부하가 '백업 완료'상태가 성공했음을보고하기 전에 러너가 완료되고 돌아 오기를 기다리는 것이 좋습니다. 현재 미니언은 국가가 러너의 반응을 기다리지 않고 성공적으로 실행되었다고보고합니다.
내 현재 설정은 다음과 같이 작동합니다
실행 백업 스크립트를 미니언에 마스터
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를 명령을 실행하고 반환
마스터에 의해 트리거되지만 미니언에서 eventlisteners를 작성하는 방법이나 기다릴 방법을 찾을 수 없습니다. 내가 보았던 또 하나의 해결책은 'salt.modules.cp.push'이다. 보안상의 이유 때문에이 문서를 통해 경고 메시지가 다시 나왔다.
해결책이 너무 복잡해 보이므로 잘못된 방식으로 접근하고 있습니다. 모든 생각을 환영합니다.