2017-02-14 17 views
2

Постановка задачи:Может ли Ansible делать отказоустойчивые SSHing?

Я использую анзибль нерест ведомых экземпляров, и SSHing в них, сделать некоторые задачи и прекратить их.

Предположим, что в пьесе нет 3-х экземпляров. В то время как SSHing в подчиненных экземплярах, если SSH не работает, тогда Ansible продолжит работу с теми, у кого был успешный SSH, или вообще не справляется с задачей?

Если нет, то можно ли каким-либо образом это сделать?

PS: Я исследовал опцию ssh_connectionretries. Но здесь, на failed SSH, я подразумеваю, что SSH не удался после повторных попыток.

+0

"* Если нет, то можно ли каким-либо образом это сделать? *" - делать что? Предыдущий вопрос - «A или B». – techraf

+0

'it' ==« Идем дальше с примерами с успешным SSH, не нарушая последующих задач ниже »:). Будет ли обновлять qn правильно – Dawny33

+0

Вот что делает Ansible по умолчанию. Просто отключите один сервер на мгновение или измените его IP-адрес в файле инвентаризации, чтобы его проверить. Не похоже на большой вопрос SO для меня ... – techraf

ответ

4

По умолчанию Ansible будет запускать ваш плей-лист для всех указанных хостов. Если какой-либо из них не удастся, он все равно продолжит работу с книгой для остальных хостов и в конце создаст файл playbook.retry с именами неудавшихся хостов, которые затем можно повторно запустить, используя:

ansible-playbook playbook.yml --limit @playbook.retry 

(при условии, что имя вашей пьесы равно playbook.yml). Обратите внимание, что повторный запуск перезапустит всю игру с начала, даже если некоторые из ваших задач преуспели в ней, следовательно, вы всегда должны пытаться сделать игрушки упругими -Запускает. Также обратите внимание, что даже если у вас есть несколько пьес в вашем плейе, все ссылаются на один и тот же хост, при первом сбое хоста, он не сможет попробовать этот хост для последующих игр.

Есть несколько способов, чтобы изменить поведение по умолчанию однако:

  • Вы можете, например, abort the play для некоторых задач с использованием any_errors_fatal: true означает отказ будет означать анзибль остановит выполнение на все узлы (это предполагает, что вы используете по умолчанию, linear strategy. Использование стратегии free означает, что другие хосты могут находиться на другом этапе, что означает, что они могут прервать раньше/позже, чем вы ожидали)
  • Кроме того, поскольку с помощью файла 2.2 можно выполнить re-set unreachable hosts между играми, что означает, что даже если ваш хост потерпел неудачу в одном из pl ays, в последующих оставшихся, все еще будет пытаться запустить новые пьесы (предыдущие пьесы по-прежнему будут отмечены как неудачные). Вы должны добавить meta: clear_host_errors в игру, где вы хотите повторить попытку всех ранее недоступных хостов.
+0

Спасибо за подробный ответ :) – Dawny33

 Смежные вопросы

  • Нет связанных вопросов^_^