본문 바로가기

클라우드/앤서블(Ansible)

앤서블 Ansible 작업 제어 8 / 비동기

# 비동기

기본적으로 실행하도 있는 작업들은 동기 방식이다. task가 실행이 완료되고 다음 task가 실행될수있다.

비동기 방식이 필요한 경우가 있다. 터미널이 하나밖에 없고, 여러개의 명령어를 내리고 싶은데 어떤 명령어 실행이 오래걸릴때 백그라운드에서 실행시킨다.  오래 걸리는 작업을(wget, 배치성 task 등) 백그라운드로 놓고 다른작업을 한 후 그 작업이 필요한 경우 동기화를 시킨다.

 

 

 

 

# ssh 세션 타임아웃방지 (poll>0)

데비안 계열은 세션 제한이 없는데 래드햇 계열은 세션 제한이 300초가 있다. 300초동안 아무 작업이 없으면 끊어진다.

async 비동기 방식으로 실행할 타임아웃 시간 -충분히 길게 잡아준다.

poll값 polling 5초마다 한번씩 확인한다(너 끝났니?). ssh세션 타임아웃 타이머가 초기화된다.

 

 

# 비동기 작업 (poll=0)

비동기방식은 poll값을 0 으로 설정한다. 0으로 설정하게 되면 이 작업이 완료될때까지 기다리지 않고 넘어간다. (실제로 백그라운드에서 실행하고 있다) fire and forget이라고도 한다.

async_status : 비동기방식으로 실행한 작업의 상태를 알기위한 모듈

jid (job task identify/job id ) : 비동기 방식으로 실행한 모든 작업들은 jid가 존재한다. 등록변수로 설정하여 jid를 알아낸다

until : 반복문으로 테스트문이 참이 될떄까지 반복한다.

retries : 재시도 횟수

delay : 재시도 간격