[Ansible] Error Handling #3 - failed_when 작업 실패 조건 지정

Ansible에서 작업 결과와 무관하게 조건에 따라 실패 여부를 제어할 수 있는 failed_when 지시어의 활용 방법을 설명합니다. failed_when 지시어란? failed_when 지시어를 사용하면 작업에 조건을 걸어 조건이 충족될 때 작업을 실패 처리할 수 있습니다. 이 방법은 정상적으로 작업이 실행되어도 작업의 결과를 체크해서 특정 조건이 만족하지 않으면 실패시키는 방법입니다. failed_when 활용 사례 예를 들어 스크립트를 돌린다고 가정해 보도록 하겠습니다. 해당 스크립트가 오류 없이 실행된다면 returncord(출력 결과) 0을 반환합니다. 그럼 앤서블에서는 정상 종료로 인식한 뒤 나머지 작업을 이어 나갑니다. 하지만 스크립트가 정상 종료되었다고 해서 작업이 정상적으로 끝났다는 보장은 없습니다. 이럴 때 failed_when 지시어를 작업에 추가하여 작업이 잘 끝났는지를 확인해 볼 수 있습니다. 사례1 : 스크립트의 출력 결과에 특정 문구가 포함되면 실패 처리 예를 들어 backup.sh 스크립트를 실행했을 때 출력 결과에 “backup failed”라는 문구가 포함되면, 스크립트가 정상적으로 종료되었더라도 작업을 실패로 간주할 수 있습니다. tasks: - name: backup etc directory ansible.builtin.command: cmd: /root/backup.sh register: results failed_when: results.stdout == "backup failed" 이렇게 설정한 후 플레이북을 실행하면 출력 결과에 따라 실패 처리 여부가 결정됩니다. 예제 출력은 다음과 같습니다: # ansible-playbook fail.yaml ... TASK [backup etc directory] **************************************************************** fata...