クイズ: 失敗を設計する
한국어 원문으로 표시합니다.
호스트 세 대에 도는 플레이의 3번 태스크가 한 대에서만 실패했습니다. 아무 손잡이도 건드리지 않았다면?
- 실패한 호스트만 이번 플레이에서 빠지고 나머지 두 대는 남은 태스크를 끝까지 실행한다
- 세 대 모두 3번 태스크에서 멈추고 플레이북이 그 자리에서 종료된다
- 실패한 호스트에서 3번 태스크를 세 번까지 다시 시도한 뒤 그래도 안 되면 멈춘다
- 실패한 호스트는 이미 적용된 태스크를 되돌린 다음 플레이에서 빠진다
grep -c 처럼 못 찾으면 1 을 내는 명령을 태스크로 쓸 때 가장 알맞은 처리는?
ignore_errors를 붙여 실패로 기록되더라도 다음 태스크로 넘어가게 한다failed_when으로 진짜 오류에 해당하는 종료 코드만 실패로 보게 기준을 바로잡는다when에 조건을 적어 찾을 것이 있을 때만 이 태스크가 실행되도록 막는다- 명령 끝에 참을 내는 구문을 덧붙여 종료 코드가 늘 0 이 되도록 만든다
block 안의 태스크가 실패해 rescue 가 끝까지 성공했습니다. PLAY RECAP 에는 어떻게 찍히나요?
- failed 가 1 올라가고 rescued 도 함께 1 올라가 두 칸이 같이 움직인다
- ignored 가 1 올라가고 그 호스트는 남은 태스크에서 제외된다
- failed 는 0 이고 rescued 가 1 이며 그 호스트는 플레이를 끝까지 간다
- unreachable 이 1 올라가고 always 블록은 실행되지 않은 채 끝난다
호스트 4대에 max_fail_percentage: 25 를 건 플레이에서 2대가 실패하면?
- 실패한 2대만 빠지고 나머지 2대는 남은 태스크를 끝까지 실행한다
- 25 퍼센트까지는 견디므로 4대 중 1대가 다시 실패할 때까지 계속 간다
- 실패한 2대에 대해서만 플레이를 처음부터 다시 돌린 뒤 결과를 합친다
- 실패 비율 50 퍼센트가 기준을 넘으므로 나머지 호스트도 그 자리에서 멈춘다
SSH 연결 자체가 안 되는 호스트가 있습니다. ignore_errors: true 를 붙이면?
- 닿지 않는 것은 태스크의 실패가 아니라 연결의 실패라 무시되지 않고 호스트가 빠진다
- 무시되어 그 호스트가 남은 태스크를 모두 건너뛴 뒤 마지막에 다시 시도된다
- 무시되어 그 호스트에서도 남은 태스크가 정상적으로 실행된다
- 무시되지만 RECAP 에는 unreachable 이 아니라 failed 로 집계된다
배포 전제를 검사하는 assert 묶음을 플레이 맨 앞에 두면서 함께 쓰면 좋은 것은?
ignore_errors: true— 전제가 어긋나도 일단 배포를 시도해 보고 결과로 판단하게 한다changed_when: false— 검사 태스크가 변경으로 집계되지 않게 해 멱등성 판정을 지킨다any_errors_fatal: true— 한 대라도 전제가 어긋나면 아무것도 건드리기 전에 전부 멈춘다ignore_unreachable: true— 닿지 않는 호스트가 있어도 검사를 마치고 진행하게 한다