#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 перевешивается на нестандартный), видимо нужно признать, что наиболее употребимый подход -- это вынесение в отдельный плейбук инициализации шагов по настройке. Получается, что каждый скрипт остаётся идемпонентным. Кто-то старается побольше всего вместить в такие плейбуки, кто-то меньше -- но направление в целом одинаковое.
Комментариев нет:
Отправить комментарий