0Pricing
DevOps Bootcamp · 강의

rescue 및 always로 Try / Catch 사용하기

실패에서 원활하게 복구합니다.

rescue 및 always로 Try / Catch 사용하기은(는) CoddyKit의 무료 DevOps Bootcamp 강의입니다. 이것은 4개 중 2번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 DevOps Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.

블록에 안전망 추가하기

block을 rescue 및 always와 함께 사용하면 작업에 try, catch, finally를 적용할 수 있습니다. 오류를 복구할 수 있게 됩니다. 🛟

rescue 구역

블록의 작업 중 하나라도 실패하면 Ansible은 rescue로 이동해 그 안의 작업을 대신 실행합니다. catch 절과 같은 방식입니다.

- block:
    - ansible.builtin.command: /opt/risky-step
  rescue:
    - ansible.builtin.debug:
        msg: "Step failed, recovering"

always는 무슨 일이 있어도 실행됩니다

always 구역은 블록의 성공 여부와 관계없이 실행되므로, 임시 파일을 삭제하는 것과 같은 정리 작업에 적합합니다.

- block:
    - ansible.builtin.command: /opt/deploy
  always:
    - ansible.builtin.file:
        path: /tmp/lock
        state: absent

세 가지를 함께 사용하기

block, rescue, always를 하나의 구조로 사용하세요. 작업을 시도하고, 오류를 처리한 다음, 항상 깔끔하게 마무리합니다.

- block:
    - ansible.builtin.command: /opt/deploy
  rescue:
    - ansible.builtin.debug:
        msg: "Rolling back"
  always:
    - ansible.builtin.debug:
        msg: "Done either way"

rescue가 실패 상태를 초기화합니다

rescue가 성공적으로 완료되면 호스트는 더 이상 실패 상태가 아닙니다. 블록이 성공한 것처럼 플레이가 계속됩니다.

실행 순서

먼저 block의 작업이 실행됩니다. 실패하면 block의 나머지 작업은 건너뛰고 rescue가 시작됩니다. 어떤 경우에도 always는 마지막에 실행됩니다.

rescue 자체가 실패하는 경우

rescue의 작업도 실패하면 호스트가 실패 상태로 표시되지만, 해당 호스트의 플레이가 중지되기 전에 always는 계속 실행됩니다.

오류 검사하기

rescue 내부에서는 ansible_failed_task와 ansible_failed_result를 읽어 어떤 작업이 실패했으며 이유가 무엇인지 확인할 수 있습니다.

- rescue:
    - ansible.builtin.debug:
        msg: "Failed task was {{ ansible_failed_task.name }}"

실제 활용: 롤백

대표적인 패턴은 block에서 배포를 수행하고, rescue에서 변경을 되돌리며, always에서 재시작하거나 잠금을 해제하는 것입니다. 매번 깔끔하게 복구할 수 있습니다.

단순히 오류를 숨기는 것이 아닙니다

rescue는 오류를 조용히 숨기는 것이 아니라 우아하게 복구하기 위한 기능입니다. 실패를 로그에 남기고 상태를 복구하세요. 아무 문제도 없었던 것처럼 처리하지 마세요. ⚠️

rescue가 없으면 즉시 중지됩니다

rescue 구역이 없으면 실패한 블록은 실패한 일반 작업과 같이 동작하여 해당 호스트의 플레이를 즉시 중지합니다.

빠른 확인

always가 어떻게 동작하는지 확인해 보겠습니다.

복습

rescue는 블록의 실패를 처리하고 호스트를 복구하며, always는 정리를 위해 매번 실행됩니다. Ansible에서의 try, catch, finally입니다. ✅

자주 묻는 질문

“rescue 및 always로 Try / Catch 사용하기” 강의는 무료인가요?

네 — “rescue 및 always로 Try / Catch 사용하기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 DevOps Bootcamp 강의 전체를 잠금 해제할 수 있습니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.

“rescue 및 always로 Try / Catch 사용하기”에서 뭘 배우나요?

실패에서 원활하게 복구합니다. 브라우저에서 직접 실행하는 실습 코드로 DevOps Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

DevOps Bootcamp을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 DevOps Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 2번째 강의입니다.

“rescue 및 always로 Try / Catch 사용하기” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 DevOps Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 DevOps Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. block으로 작업 그룹화하기
  2. rescue 및 always로 Try / Catch 사용하기
  3. 실패 제어: failed_when 및 ignore_errors
  4. fail 모듈로 사용자 지정 검증하기
← DevOps Bootcamp(으)로 돌아가기