Рейтинг:0

Ansible playbook перезагружает сервер, дождитесь завершения перезагрузки

флаг us

Я столкнулся с проблемой при выполнении сценария оболочки с помощью ansible playbook.
Проблема: я теряю соединение с удаленным сервером, потому что сценарий оболочки перезагружает сервер.

Моя игра Ansible

- имя: Обработка перезагрузки
  хозяева: все
  стать: да
  
  задачи:
    - имя: Выполнить скрипт 
      оболочка: bash testscript.sh
      аргументы:
        chdir: /home/ubuntu
      уведомлять:
        - Дождаться перезагрузки сервера
        
  обработчики:
    - название: Подождите, пока сервер перезагрузится
      местное_действие:
        модуль: wait_for
          host={{ inventory_hostname }}
          порт=22
          задержка=10
        стать: ложным

Мой сценарий оболочки:

#!/бин/баш
echo "Выполнение некоторых задач"
эхо "перезагрузка сейчас"
перезагрузка
эхо "перезагрузка завершена"
echo "Выполнение еще нескольких задач"

Ошибка, которую я получаю при перезагрузке удаленного сервера

фатальный: [мой-ip-адрес]: НЕДОСТУПНО! => {
    «изменено»: ложь,
    "msg": "Не удалось подключиться к хосту по ssh: общее подключение к <мой-ip-адрес> закрыто.",
    "недостижимый": правда
}

Можно ли выполнить перезагрузку, которая выполняется с помощью сценария оболочки, и дождаться подключения, пока удаленный сервер снова не включится?

Спасибо.

флаг in
Есть ли причина не использовать [модуль перезагрузки](https://docs.ansible.com/ansible/latest/collections/ansible/builtin/reboot_module.html)?
флаг in
Вы понимаете, что команды в вашем скрипте после `перезагрузки` никогда не будут выполнены?
vik2595 avatar
флаг us
@GeraldSchneider, я собираюсь установить специальные инструменты, которые включают в себя эти шаги. Подробнее о скрипте, переименовании сетевого интерфейса и назначении определенного IP. К вашему сведению: мы ничего не можем изменить в сценарии оболочки. Поэтому я должен думать о другом способе заставить его работать.
vik2595 avatar
флаг us
@GeraldSchneider, по-видимому, он выполняется. Пожалуйста, проверьте этот скрипт для более подробной информации. https://github.com/magma/magma/blob/master/lte/gateway/deploy/agw_install_ubuntu.sh
Рейтинг:2
флаг in

Вы должны использовать ждать_для_соединения вместо.

задачи:
  - имя: Выполнить скрипт 
    оболочка: bash testscript.sh
    аргументы:
      chdir: /home/ubuntu
  - имя: подожди
    ждать_для_соединения:
      задержка: 10

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

В качестве альтернативы используйте модуль перезагрузки, который делает это автоматически.

vik2595 avatar
флаг us
Обязательно попробую этот метод.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.