Задать вопрос
@ksvdon

Долгая таска (больше двух часов) в Ansible падает как UNREACHABLE, похоже на таймаут какой-то, как исправить?

Запускаю в Jenkins(е) Ansible play для выполнения шелл команды на удалённом хосте, команда выполняется долго, несколько часов. Вываливается ровно через 2 часа после запуска таски (или плея, там фактически 1 действие).

В ансибл конфиге попробовал увеличить:
[persistent_connection]
connect_timeout = 400
command_timeout = 400

думал, может эти параметры как-то влияют, но ,похоже, решение где-то в другом месте.

вот сама ошибка:
fatal: [hostname]: UNREACHABLE! => {"changed": false, "msg": "Failed to connect to the host via ssh: Shared connection to 10.10.10.2 closed.", "unreachable": true}


Удалённый хост, соединение с которым упало по UNREACHABLE жив и здоров, с хорошим аптаймом, ничего с ним не происходит. Проблема явно в превышении каких-то лимитов на соединение, но где это настроить, я не соображу. Если кто-то сталкивался - подскажите, какие есть варианты увеличить возможность держать активным соединение часами для одной и той же таски/плея в ансибл. Или, возможно, есть другой легковесный альтернативный инструмент, который железобетонно будет держать соединение при запуске шелл команды на удалённом хосте и который просто использовать в Jenkins pipeline. В идеале - решение для ансибл т.к. есть подготовительные действия, которые тоже придётся переносить на альтернативный инструмент, в случае чего.
Возможно, paramiko в python скрипте сможет держать соединение дольше, если кто-то проверял - тоже не плохой вариант был бы для меня.
  • Вопрос задан
  • 212 просмотров
Подписаться 1 Средний 2 комментария
Решения вопроса 1
@ksvdon Автор вопроса
https://docs.ansible.com/ansible/latest/playbook_g...
большой async (ожидаемое время работы таски) и poll > 0

Наверняка есть другие варианты, но этот вариант сработал и меня пока удовлетворяет.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
opium
@opium
Просто люблю качественно работать
надо увеличить основной параметр в конфиге который называется просто timeout
ну и все остальные тоже увеличить до 2 часов
в ссх конфиге поправить ControlPersist и ControlMaster
ну и запустить с -vvv если падает на одном месте то сразу увидите почему
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы