Як я можу запустити 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/isissue/1663

https://github.com/ansible/ansible/isissue/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

Так, я знаю, що ansible 2.0 продовжуватиме працювати на інших хостах, якщо на одному з них з'являться збої. Я думаю, я не думав, що це буде по-іншому, якби я вела серійно: 1. Це те, що ти кажеш?
Пітер Тернер

Це правильно, серійний: 1 повинен мати таку поведінку, а якщо цього немає (тому що ??), додайте також max_failure_percentage: 0. Я б також запропонував оновити Ansible, оскільки у 2.0 було багато помилок.
Лісовий мисливець

Насправді так багато помилок, що у вас відсутні файли .retry в 2.0! github.com/ansible/ansible/isissue/13944
Woodland Hunter

Гей, тому я не єдиний, хто постійно латає джерело. Це добре знати.
Пітер Тернер

2

У версії 2.5+ (після запитання) є налагоджувач, який охоплює більшу частину цього: https://docs.ansible.com/ansible/latest/user_guide/playbooks_debugger.html

Що стосується одного за одним, то використання "--forks 1" підключається лише до однієї системи одночасно, якщо ви хочете робити це одночасно, а не кожен раз.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.