한 번에 한 호스트에서 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.