Страницы

Поиск по вопросам

четверг, 23 января 2020 г.

Инициализация нового хоста ansible: как проверить возможность подключения к хосту

#ansible


У меня используется ansible 2.0

Есть скрипты, которые выполняют различные настройки серверов, общие части вынесены
в роли и т.п. Настройка выполняется на каждом сервере из-под учётной записи automate_ansible,
который может passwordless sudo: в ansible_config прописан remote_user, все скрипты
имеют строку become -- в общем, всё давно работает.

Всё хорошо, кроме того, что нужно первоначально этого пользователя создать. Есть
как раз один скрипт, который коннектится к серверу как root, создаёт пользователя ansbile,
делает некоторые настройки по корпоративным стандартам.

Боль-печаль заключается в том, что этот скрипт -- единственный неидемпонентный: среди
его шагов есть один шаг, в котором устанавливается запрет подключения по ssh пользователем
root и поэтому как только выполнишь скрипт -- уже работают все остальные, но этот уже
вылетит с ошибкой подключения к серверу.

А очень хочется иметь возможность запускать этот скрипт ещё раз, чтобы ансибл перезаписал
заново пароли рута, те же самые конфиги ssh, пользователей и т.п.

Есть ли возможность как-то проверять предварительно соединение с сервером (ткнуться
поду учёткой спец. пользователя, если есть -- пройти весь остаток скрипта из-под него,
только с become, если нет -- зайти root'ом и остаток скрипта пройти как чистый рут)?

Все варианты решения, которые я знаю - это лишь костыли.

Либо можно написать крошечный скрипт инициализации, который выполнит всего одно действие
(создаст пользователя для анисибл и отвалится) -- а все остальные действия вынести
в скрипт инициализация2.

Либо можно оставить длинный скрипт инициализации -- и отдельно писать практически
такой же скрипт на повтор инициализации, но уже от пользователя ансибл.

Хочется возможности тестирования соединения ssh. Это реально сделать или не предусмотрено?
Кто и как решает подобную задачу? Или может и нет большого смысла в том, чтобы пытаться
её решить?
    


Ответы

Ответ 1



На днях на большом stackoverflow было обсуждение этой же темы (там только порт ssh перевешивается на нестандартный), видимо нужно признать, что наиболее употребимый подход -- это вынесение в отдельный плейбук инициализации шагов по настройке. Получается, что каждый скрипт остаётся идемпонентным. Кто-то старается побольше всего вместить в такие плейбуки, кто-то меньше -- но направление в целом одинаковое.

Комментариев нет:

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