Jak uruchomić ansible na jednym hoście na raz i zepsuć się w przypadku awarii


15

Mam podręcznik Ansible, w którym chcę kolejno aktualizować kilka niestabilnych urządzeń. Mogę używać serial:1, ale chcę całkowicie zatrzymać podręcznik, jeśli dostanę awarię, abym mógł to naprawić przed kontynuowaniem zamiast gromadzenia błędów.

Chciałbym również ponownie uruchomić poradnik na tym samym hoście, na którym zatrzymałem się. Obecnie używa Ansible v2.0, ale może także przełączyć się na nowszą wersję, jeśli tego rodzaju funkcja jest dostępna tylko w nowszych wersjach.

Odpowiedzi:


15

Twój podręcznik zatrzyma się, gdy wystąpi awaria i korzystasz z niego serial: 1zgodnie z dokumentacją .

Domyślnie Ansible będzie kontynuował wykonywanie akcji tak długo, jak długo istnieją hosty w grupie, które jeszcze nie zawiodły.

To powiedziawszy, wydaje się, że istnieje pewne zamieszanie w społeczności w stosunku do domyślnego zachowania i wydaje się, że zmieniło się - lub było błędne - gdzieś pomiędzy 1,8 a 2,1.

Jeśli serial: 1to nie wystarczy, użyj tego dodatkowego ustawienia:

max_failure_percentage: 0

W niektórych sytuacjach, na przykład przy aktualizacjach kroczących opisanych powyżej, pożądane może być przerwanie gry po osiągnięciu określonego progu awarii. Aby to osiągnąć, od wersji 1.3 można ustawić maksymalny procent awarii ...

==

Jeśli chodzi o ponawianie próby, powinieneś zobaczyć następujący komunikat o błędzie:

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

Użyj tej --limitflagi, a przy następnym wykonaniu ansible-playbookbędzie kontynuowana od miejsca, w którym się nie udała.

Ponów próbę zostaną utworzone, chyba że skonfigurujesz retry_files_enabled = Falsekonfigurację.

Alternatywnie --start-at-taskmoże również działać.

Źródła:

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
Jeśli ktoś ma lepsze pojęcie o tym, co stało się ze zmianą / błędem w wersjach 1.9 i 2.0, proszę dać mi znać, a zaktualizuję tę odpowiedź.
Woodland Hunter

Tak, wiem, że ansible 2.0 będzie nadal działać na innych hostach, jeśli wystąpi awaria jednego z nich. Chyba nie sądziłem, że miałbym inne zachowanie, gdybym uruchomił serial: 1. Czy tak mówisz?
Peter Turner

Zgadza się, serial: 1 powinien mieć takie zachowanie, a jeśli nie (bo ??), dodaj również max_failure_percentage: 0. Sugeruję również aktualizację Ansible, ponieważ 2.0 zawierało wiele błędów.
Woodland Hunter

Tak wiele błędów, że brakuje plików .retry w wersji 2.0! github.com/ansible/ansible/issues/13944
Woodland Hunter

Heh, więc nie jestem jedynym, który ciągle łata źródło. Dobrze wiedzieć.
Peter Turner

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.