Timur
Чуть погодя попробую детальнее расписать суть проблемы
Timur
Как до компа дойду
Timur
Stay tuned
Max
📻
greydjin
убрал проверку is match из проверки групп хостов - оно заработало
Timur
Итак, по порядку
Timur
В ансибле основными элементами являются таски, плейбуки, роли и инвентарь
greydjin
+ переменные
Timur
основными элементами
Timur
Переменные - это уже вторичные параметры
Timur
Не забегайте вперед
Timur
Итак: таски, плейбуки, роли, инвентарь
Timur
Таск - это элемент описания конфигурации в виде определенного модуля с заданными параметрами (создание/изменение пользователя, запуск службы, копирование файла и т.п.)
Sergey
Timur
Плейбука - это набор плеев, т.е. списка тасков, выполняемых на определенных элементах инвентаря (группах или хостах)
Timur
Как вариант - в плее на каждый элемент инвентаря, помимо тасков могут применяться роли
Timur
Роль - это некий упорядоченный и параметризуемый набор тасков, выполняющих какую-то определенную функцию, приводящую инфраструктуру к некому виду
greydjin
Timur
Например - роль установки сервера баз данных приводит сервер (или группу серверов) к состоянию, что на них установлен и запущен с определенными параметрами нужный сервер баз данных
Timur
Роли обычно делаются так, чтобы быть максимально отвязанными от элементов инвентаря. А все настройки роли делаются через набор параметров, которые ей передаются любым способом - через ту же плейбуку или инвентарь, например
Timur
Теперь инвентарь
greydjin
Sergey
но не умеет ssh авторизацию из коробки
O_o
И не должен.
Ставится nss_pam_ldap (nslcd + pam_ldap) . Модуль PAM, который как раз аутентификацию выполнит по запросу от ssh благодаря том, что зашлёт запрос демону nslcd, а тот сгоняет в LDAP.
greydjin
Timur
Инвентарь - это набор хостов (или других аналогичных элементов инфраструктуры - например, контейнеров), с присвоенными им набором тегов (ака группы)
Max
но не умеет ssh авторизацию из коробки
"из коробки", это слово сложное.... он умеет. ты просто "коробку" не ту ищешь.
чем больше "кнопок" в сложной системе, и чем больше случаев она покрывает, тем менее возможно предоставить ее в одной "коробке".
поэтому телефон, можно продавать в коробке. даже автомобиль.
а систему отлова аномалий в широком диапазоне данных, или систему аутентификации/авторизации, как не клади "в коробку", это будет просто маркетинг (есть продукты от производителей. то же самое, с некоторыми допусками , но все равно для "точечного коня в вакууме")
чтобы она делала то, что тебе надо, ты либо наймешь кого-то, либо сделаешь по "бест практисес", и наймешь консультанта после взлома, либо сам будешь вкуривать как и с чем его готовить и есть.
Timur
Также в инвентарь могут входить параметры ролей и прочих переменных, которые нужно присвоить определенным элементам инвентаря
greydjin
Stepan T.
Stepan T.
И управление ключами
Max
Умеет
блин с 80х это делает, емнип.
Stepan T.
Просто ты в гугл не сумел
Timur
Но они тоже могут быть заданы на уровне инвентаря, в рамках хоста или группы
Max
Stepan T.
Не пойду туда. Если надо про авторизацию, в том числе ссш, можешь мне просто написать, если интересно.
Sergey
Timur
Теперь, что касается задачи создать набор юзеров и групп по хостам
Stepan T.
Красота в глазах смотрящего. В прочем как и проблемы.
Stepan T.
FreeIPA в репликации отлично, но немного течёт по памяти =)
Max
Max
или для внедрения нанять людей. вопрос бизнеса, приоритетов и т.д.
Stepan T.
Stepan T.
=)
Max
обычно в .ру любят сами поковырять, велики, мопеды, свою систему ведения версий, пропатчить mysql чтобы делал что-то, что выходит в следующей версии, да так, что невозможно потом мигрировать.
Max
Max
ты там как гаечник или девопс?
greydjin
я админ
greydjin
гипервизоры, телефония, почта. я не работаю с кодом, не ci-cd
Max
ты сидишь в клетке с намордником или присутствуешь на принятии стратегических решений?
greydjin
Max
факт
Если тебя это устраивает - бог в помощь.
Timur
Описание правильного подхода нужно, или будем обсуждать, кто там админ и в клетке с намордником?
Max
Пардон. меня фатализм прибил.
greydjin
Я ожидаю от вас текста, но вы не задаете вопросы, поэтому я просто читаю
Max
сколько юзеров в среднем надо трогать, как часто, на скольки серверах, и сколько в среднем их там сидят? (количество в порядках, точная цифра не важна) ?
greydjin
Давайте подождем постов Тимура, он упорядоченно рассказывает, я бы хотел чтобы было меньше сообщений между его постами
Timur
Итак, есть задача создать определенный набор групп и юзеров на определенном наборе хостов
Timur
Эту задачу логично поручить одной роли, вызываемой с разными параметрами
Timur
Т.е. сама роль должна создавать нужных юзеров, группы и давать им нужные атрибуты (как вариант - удалять ненужные)
Timur
В качестве параметров логично должны передаваться набор групп и юзеров с определенными доп. атрибутами
Timur
Тогда плейбука получается максимально простой:
- name: Setup users and groups
hosts: all
roles:
- role: setup_users
Timur
Теперь о параметрах
Timur
На разных хостах логично ожидать разный набор групп и юзеров со своими настройками
Timur
Их логичнее всего выносить в group_vars
Timur
Т.е. в переменные, принадлежащие определенной группе и падающие только на хосты определенной группы
Timur
Каждый хост может принадлежать сразу нескольким группам
Timur
Группы могут включаться друг в друга
Timur
Полная аналогия с теми же правами юзера на машине: права получаются от членства в группах, которое может быть весьма запутанным
Timur
Соответственно, задача создания правильного набора юзеров и групп на хостах сводится просто к правильному заполнению инвентаря и правильным group_vars
Timur
Сама роль при выполнении на хосте не должна знать ничего о том, в какие группы этот хост включен. Роль просто должна создавать юзеров на хосте в соответствии с заданными параметрами - вот и все.
Timur
А теперь посмотрите на роль из того примера выше и подумайте - соответствует ли она описанным выше правилам?
greydjin
Timur
greydjin
в моем примере указан файл переменных в которых и описано то что вы предлагаете записать в group_vars
greydjin
так что не соответствует