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