Ansible - 실패 시 계속(무시하는 대신)

Ansible - 실패 시 계속(무시하는 대신)

플레이북이 실행되는 동안 실패를 무시하기 위한 이 플래그를 알고 있지만 ignore_errors: yes"동작을 무시"하지 않지만 플레이북을 끝까지 실행하도록 설정할 수 있는 것이 Ansible에 있는지 궁금합니다. 더 나은 보고 제어를 원하기 때문입니다.

이를 설명하기 위해 지금까지의 "실행 중인 검토"는 다음과 같습니다.

PLAY RECAP *******************************************************************************************************************************************************************************************
<server>                  : ok=195  changed=0    unreachable=0    failed=0    skipped=0    rescued=0    **ignored=10**

"ignored=10"은 실제로 "실패한 확인"입니다. 필요한 것은 다음과 같이 다시 설명하는 것입니다.

PLAY RECAP *******************************************************************************************************************************************************************************************
<server>                  : ok=195  changed=0    unreachable=0    **failed=10**    skipped=0    rescued=0    ignored=0

답변1

귀하의 질문에 대해

Ansible에서 설정할 수 있는 것이 있다면 "동작을 무시"하는 것이 아니라 플레이북을 끝까지 실행하는 것입니다.

당신은 볼 수 있습니다플레이북의 오류 처리그리고실패의 정의~처럼

Ansible을 사용하면 조건을 사용하여 각 작업에서 "실패"가 의미하는 바를 정의할 수 있습니다 failed_when.

게다가blocks를 사용하여 오류 처리.

답변2

사용할 수 있는 한 가지 전략은 오류를 무시하고 실패 조건을 변수에 저장하고 해당 변수의 상태를 플레이북의 마지막 작업으로 어설션하는 것입니다. 그런 식으로:

  • 실패 여부에 관계없이 모든 작업이 시도됩니다.
  • 작업 중 하나라도 실패하면 전체 플레이북이 실패하므로 최종 보고서에서 성공 또는 실패를 확인하고 필요한 경우 명령의 반환 코드를 사용할 수 있습니다.
  • 기본적으로 작업 실패는 무시되더라도 빨간색으로 강조 표시되므로 해당 메시지는 플레이북 출력에서 ​​쉽게 찾을 수 있습니다.
  • failed등록된 출력에는 루프 항목 중 하나라도 실패했는지 표시하는 자체 속성이 있으므로 이는 루프에도 적용됩니다 .

예를 들어:

  - set_fact:
      global_fail: false

  - name: Assert the state of something
    ansible.builtin.assert:
      that:
        - <condition you want to assert>
      success_msg: ...
      fail_msg: ...
    register: assert_task
    ignore_errors: true

  - set_fact:
      global_fail: "{{ global_fail or (assert_task.failed is defined and assert_task.failed) }}"

  <Further tasks here>

  - name: Assert that no tasks failed
    ansible.builtin.assert:
      that:
        - not global_fail
      success_msg: "All tasks succeeded"
      fail_msg: "One or more tasks failed"





관련 정보