본문 바로가기

Ansible

Ansible - block ~ rescue / always

[1. 개요]

Ansible 로 각 서버들에 대해 작업을 진행 중, 특정 작업이 실패하는 경우

작업자에게 노티 하는 부분이 필요하다.

 

일종의 try ~ catch ~ finally 같은 것이 playbook 작성 시 필요한 것이다.


[2. block ~ rescue]

block 은 task 들의 논리적인 group 을 만든다.

block ~ rescue / always 는 하나의 task 단위로 관리 한다.

tasks
    - name: sample
      block:
          # 여기에 일련의 작업들을 배열 형태로 기술
          # 작업이 실패 할 경우, recuse 로 점프 한다.
      
      rescue:
          # 여기에서 예외 처리 등을 해준다.
          # 보통, 진행 하던 playbook 전체를 종료 시켜주는 것이 좋다
          # meta: end_play 를 이용하면 작업 전체를 종료 시킬 수 있다.
      
      always:
          # 여기에는 항상 실행되어야 하는 작업을 작성한다.

[3. meta]

ansible 내부 실행 또는 상태에 영향을 주는 특별한 task 이다.

playbook 어디에서나 실행 될 수 있다.

window 서버를 대상으로도 지원 된다.

  • end_play: 모든 host 들에 영향을 줌, playbook 을 실패 없이 종료한다.
  • end_host: 실패 없이, 현재 host 에 대한 playbook 을 종료한다.
  • reset_connection: ssh 같은 연결을 끊는다.
  • ...

[3. 공식 문서]

 

 

'Ansible' 카테고리의 다른 글

Ansible - fetch vs copy & synchronize  (0) 2023.01.07
Ansible 설치 및 기본 개념  (0) 2023.01.02