Timur
Там сразу всю структуру можно версионировать как единое целое
George
Ну, да
George
А когда 100500 проектов, которые используют общие модули - удобнее роль-на-репо
Timur
Если же проектов несколько, и они используют общий набор ролей, но различные плейбуки и много разных энвов, то роли удобнее в отдельных репах держать
Timur
Тогда роли апдейтятся и тестируются в своих потоках, а изменения трекаются как релизы и версии.
Stanislav
По моему, ты не рассказываешь ещё кучу контекста
Слишком много буков получается )) А связные роли можно делать и с отдельными репами. К примеру, фиксироваться на тэге гита, как на релизе, тогда дополнительно получим больший контроль над применением ролей. Ты ведь состоишь и в группе по k8s? Тогда такой пример. Пробовали использовать loghouse (до сих пор юзаем), однако, у них была проблема. Docker image с тэгом latest, что приводило к незапланированным апдейтам и ломало все нафиг, пришлось писать им issue,а пока делать свой image. Так же и с ролями, надо фиксироваться на версии, иначе могут быть неприятные последствия.
Stanislav
@gecube Да, у нас 100500 проектов с общими модулями )
Timur
Плейбуки же кладутся в другие отдельные репы, каждая плейбука тянет определенный набор ролей со своими версиями и тестирует именно свой набор своими собственными сценариями
Stanislav
Да
Получается очень похоже на наш кейс. А инвентарь/инвентари где хранятся?
Timur
Если роли правильно написаны, то они легко параметризуются и могут быть использованы в самых разных окружениях
Timur
Получается очень похоже на наш кейс. А инвентарь/инвентари где хранятся?
В проектных репах, в привязке к конкретному проекту. Можно вместе с плейбуками в одной репе, можно отдельно.
Timur
Вместе логичнее на мой взгляд, но случаи бывают разные
Stanislav
Ну тогда это то же самое, что мы делаем. )) Только еще делаем проект на роль
Timur
Главное, что с каждой поейбукой идёт файл requirements, где перечислены версии ролей
Stanislav
Роли получаются максимально независимыми, чтобы можно было их переиспользовать в различных окружениях
Timur
Мы многие роли даже в паблик выносим для удобства
Stanislav
Если мапить на ваш опыт, то вопрос примерно так звучит: при переписывании ролей (изменение названий переменных, добавление новых ф-ций), не приходится ли менять много инвентарей (групповых переменных) или самих плейбуков для применения этих изменений?
Stanislav
Ведь единственно, что позволяет кастомизировать роль под окружение это переменные
Timur
Ну, обычно кардинальным образом набор переменных не меняется все-таки
Timur
Стараемся поддерживать обратную совместимость
George
Ведь единственно, что позволяет кастомизировать роль под окружение это переменные
Ну, получается, что все роли должны по одному стандарту написаны...
Timur
Стараемся сразу делать роли максимально параметризованными с минимальным количеством хардкода, чтобы они могли применяться в любом окружении
Stanislav
Ну, обычно кардинальным образом набор переменных не меняется все-таки
Окей, огромное спасибо ) Волновал именно этот вопрос. Интересно было как у людей сделано ))
Stanislav
Стараемся сразу делать роли максимально параметризованными с минимальным количеством хардкода, чтобы они могли применяться в любом окружении
Получается: 1. Обратная совместимость 2. Стараться писать параметров по максимуму. Будем пробовать )
Stanislav
@tgadiev Еще один вопрос, если позволите. Как кастомизируете роли, полученные из galaxy, к примеру? Самый лучший вариант это pull request конечно ) Но он не всегда быстрый. К примеру, берем роль zabbix-agent и хотим расширить функционал. Пока что не придумали ничего лучше как описать свою роль, в зависимостях у которой будет роль zabbix-agent и дополнительно описываем в своей роли таски, нужные дополнительно.
George
я видел парней, которые тащили роли и тупо в худшем случае без изменений клали у себя
George
потому что галакси - та еще помойка
George
в лучшем случае - переписывали по своему шаблону
Stanislav
не используйте гелекси
Это как один из вариантов ) Попробовали, выбрали роль с тестами и молекулой, но что то не зашло пока что. Порождает очень много проблем с кастомизацией, да и тестов маловато.
Stanislav
Приходится что функционал дописывать, что тесты
George
https://github.com/geerlingguy/
George
например
George
я просто тащусь от этого человека
Stanislav
есть герои, которые держат целые коллекции ролей
Ага, натыкался на его репозитории. Думается, что методы конфигурирования у всех разные, да и одним достаточно тот же nginx настроить только чтобы он отдавал 404, а другим надо и проксирование настраивать с правилами. Так и получается, что функционала всегда не хватает и приходится дописывать.
George
https://github.com/debops/
George
вот вроде еще норм тема
George
кто бы запинил и в фак
George
а то я все время забываю наборы качественных ролей
Timur
https://github.com/geerlingguy/
У него роли довольно сырые, как по мне
Timur
Мы некоторые сильно перепиливали для надежной работы
George
а выложили? давай ссылку
George
буду звездить ваши репы
Timur
а выложили? давай ссылку
Давал вроде ссылку
Timur
Щас, момент
Timur
https://t.me/pro_ansible/67652
Timur
Вот на гитхабе группа: https://github.com/lean-delivery
Timur
Можно форкать роли или наоборот - предлагать дополнения или фичи
Stanislav
Посмотрел роль sonarqube с целью заюзать у себя. Вопросы ) чего так мало тестов и проверяли ли откат на предыдущую версию? Т.е судя по таскам откат должен нормально пройти, но проверки этого нет
Stanislav
pull requests принимаете?
Timur
Конечно
Stanislav
Ок, тогда стяну, попробую у себя применить, если что пришлю pull request
Dmitry
Расскажите, есть ли у кого решения AWX раннеры запускать по модели pull?
Dmitry
мне не подходит вариант с ситуацией когда к каждому раннеру надо подключаться напрямую
Sashko
Кто-то пробовал сделать epub доку? Как здесь? https://github.com/deoren/notes/issues/6
Dmitry
раннер для AWX
Timur
А
Timur
Надо глянуть
Timur
Для гитлаба автоскейлинг раннеров юзаем
Timur
А для awx сходу не скажу
George
просто прибью здесь ссылку
George
https://github.com/lean-delivery
George
парни, подскажите, ну, вот ведь получается, что в роли только определенный набор параметров можно передать. Они никогда не охватывают ВЕСЬ спектр возможностей настройки приложения. Как выходите из положения? Самое простое, конечно, попросту деплоить конфигурационные файлы целиком
⁠
можно начинать с чего-то и по мере нужды расширять список
⁠
все равно никогда не угонишься за развитием аппа
Womchik
я видел в галакси роль для постгреса - там все параметры конфига были в переменные заведены
Timur
Особенно если параметры в виде yaml конфига
⁠
Можно все параметры охватить вполне
у нас разве есть такие роли?
Timur
Тогда можно просто отдельный словарь с параметрами задать
⁠
ну если только