2017-01-04 4 views
2

완료하려면 약 30 분 이상이 소요되는 Anecess에서 명령을 실행해야합니다. 명령은 연속적으로 실행되어야합니다. 제가 실행하고있는 명령은 카산드라의 nodetool 수리이며, 우리가 병렬로 시작하면 모든 기계에서 프로세스가 진행됩니다. 카산드라 수리는 모든 기계에서 병렬로 진행될 수 없기 때문에실행중인 명령이 장시간 실행 중입니다. 호스트가 도달 할 수 없어서 실패한 상태로 끝납니다.

그래서 우리는 그들을 연속적으로 운영하고 있습니다. 그러나 명령을 완료하는 데 시간이 오래 걸리는 경우가 있습니다.

명령이 오래 걸리며 메시지 노드에 도달 할 수 없어서 잠시 기다린 후 내 장난 플레이 북이 죽어 가고 있습니다.

{ "변경"거짓 "MSG", "도달" "ssh를 통해 호스트에 연결하지 못했습니다."사실}

방법은 기다릴 수 있나요 프로세스가 완료 되었습니까?

- name: Execute nodetool repair 
    command: {{cassandra_installation_dir}}/bin/nodetool repair -j 4 

답변

3

당신은이에 대한 async를 사용해야합니다 :


내가

작업 호스트 serial: 1 사용 및 작업 아래 실행하고하는 것은

- name: Execute nodetool repair 
    command: {{cassandra_installation_dir}}/bin/nodetool repair -j 4 
    async: 3600 
    poll: 10 

이있는 명령을 실행합니다 최대 3600 초 (1h) 동안 비동기 모드로 전환하고 명령이 지느러미인지 확인하십시오 10 초마다 해산됩니다 (어쨌든 기본값 임). 명령이 1 시간 후에 완료되지 않으면 작업이 실패합니다.

+0

안녕하세요. Strahinja, 연결 문제로 시도한 후에 비동기 사용이 끝났습니다. 결국 나는 1 분의 폴링 시간과 똑같이했다. 나는 비슷한 것을 시도하는 다른 사람들에게 도움이되기 때문에 이것을 받아들입니다. 고맙습니다. – Srini