한 번에 한 호스트에서 ansible을 실행하고 실패시 어떻게 중단합니까?


15

여러 가지 비정상적인 장치를 순서대로 업데이트하려는 Ansible 플레이 북이 있습니다. 사용할 수는 serial:1있지만 오류가 발생하면 플레이 북을 모두 중지하여 오류를 누적하는 대신 진행하기 전에 해결할 수 있습니다.

또한 내가 멈 췄던 호스트에서 플레이 북을 다시 시작하고 싶습니다. 현재 Ansible v2.0을 사용하고 있지만 이러한 종류의 기능이 최신 버전에서만 제공되는 경우 최신 버전으로 전환 할 수도 있습니다.

답변:


15

오류가 발생하고 설명서serial: 1 에 따라 사용중인 경우 플레이 북이 중지됩니다 .

기본적으로 Ansible은 그룹에 아직 실패하지 않은 호스트가있는 한 계속 작업을 실행합니다.

그것은 기본 행동에 대해 커뮤니티에서 약간의 혼란이있는 것으로 보이며 1.8에서 2.1 사이에서 변경되었거나 버그가있는 것 같습니다.

그래서, 만약 serial: 1충분하지 않습니다,이 추가 설정을 사용합니다 :

max_failure_percentage: 0

위에서 설명한 롤링 업데이트와 같은 일부 상황에서는 특정 실패 임계 값에 도달하면 재생을 중단하는 것이 바람직 할 수 있습니다. 이를 위해 1.3 버전부터 최대 실패율을 설정할 수 있습니다 ...

==

플레이 북을 다시 시도하면 다음과 같은 실패 메시지가 표시됩니다.

to retry, use: --limit @/home/user/site.retry

이 --limit플래그를 사용하고 다음에 실행할 ansible-playbook때 실패한 지점부터 계속됩니다.

retry_files_enabled = False구성에서 설정하지 않으면 재시도 파일이 작성됩니다 .

대안으로 --start-at-task작동 할 수도 있습니다.

출처 :

https://github.com/ansible/ansible/issues/1663

https://github.com/ansible/ansible/issues/16241

http://docs.ansible.com/ansible/playbooks_delegation.html#rolling-update-batch-size

http://docs.ansible.com/ansible/playbooks_delegation.html#maximum-failure-percentage

http://docs.ansible.com/ansible/intro_configuration.html#retry-files-enabled

http://docs.ansible.com/ansible/playbooks_startnstep.html#start-at-task


1
1.9 및 2.0에서 변경 / 버그에 대해 잘 알고있는 사람이 있으면 알려 주시면이 답변을 업데이트하겠습니다.
— Woodland Hunter

예, 어쩌면 2.0 중 하나에서 장애가 발생하면 다른 호스트에서도 ansible 2.0이 계속 실행될 것입니다. serial : 1을 실행하면 다른 동작을하지 않을 것이라고 생각합니다. 그게 니가 말하는거야?
— 피터 터너

그것은 정확하고 연속적입니다 : 1은 그 행동을 가져야하며 (왜냐하면) max_failure_percentage : 0도 추가하지 마십시오. 또한 2.0에 많은 버그 가 있으므로 Ansible을 업그레이드하는 것이 좋습니다 .
— Woodland Hunter

실제로 너무 많은 버그로 인해 2.0에서 .retry 파일이 누락되었습니다! github.com/ansible/ansible/issues/13944
— Woodland Hunter

허, 그래서 나는 끊임없이 소스를 패치하는 유일한 사람이 아닙니다. 알아두면 좋습니다.
— 피터 터너

당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.