очень своеобразный инструмент и имеет кучу подводных камней, которые не видны пока не набьешь шишек. Поэтому хочу посоветоваться с более опытными.
У меня на работе есть хренова куча ролей и плейбуков, имеющих 2 и более вариантов работы. Обычно запускаем плейбуку с каким то тегом и в зависимости от переданного значения что то пуллится, пушится, деплоится и т.д. А как вообще смотрите на интерактивные меню в самом начале работы? Это - бест практицес, лютый зашквар или ни то, ни другое?
Unspeakable
не очень понял, что ты хотел донести
Подготовьте скрипт запуска с различными параметрами
Как говориться теги не нужны и то, что надо получить передавать через переменные в инвентаре Как по мне исключение , то, что не может быть зафиксировано .
У тебя есть среды: дев, уат, препрод, прод. Ты тегом при запуске выбираешь, куда задеплоить. Другой вариант: среда одна, а регом релиза ты указываешь, какую версию накатить. Иногда нужно накатить более старый релиз. Третий вариант: есть несколько компонентов (фронт, бэк, апи и т.д.) и ты выбираешь с тегом установку отдельного компонента или без тега ставится все
Среды разделены на уровне инвентаря, не надо ничего выбирать
Да не в этом дело. Юзкейсов сожно придумать сотни. Это просто пример
Сразу же выглядит криво, так как для сред используются инвентари. Насчет релиза - это переменными устанавливается. Ну а вместо выбора компонентов тэгами проще использовать несколько плейбуков/ролей.
>так как для сред используются инвентари. Ну ок, для сред у всех используется разделение по инвентори. Хотя это был просто пример. >Насчет релиза - это переменными устанавливается. Зачем каждый раз лазить в код и править, если можно передать при старте? Лишние телодвижения иногда бывают лишними >Ну а вместо выбора компонентов тэгами проще использовать несколько плейбуков/ролей. Плодить роли и плейбуки просто ради количества? У меня десяток однотипных операций по созданию папок, заливке имиджей, запуску контейнера. И я буду городить 10 ролей и плейбуков, отличающихся одним словом? А как же принцип DRY? Не говоря уже об отсутствии логики. Если запустил плейбуку без тегов - раскатываются все компоненты. Указал тег с именем компонента - раскатал только один. Удобно, без повторяемости, уменьшаем человеческий фактор, когда не надо в 10 ролей вносить изменения и т.д.
Да Представь себе, указать переменную или откатится именно в git, что бы было видно кто и когда поломал прод. Если у тебя куча мелких ролей и ты не можешь их объединить в универсальную, что бы передавать состояние системы, то явно у тебя где то проблема. Еще раз мы говорим именно о состоянии системы. Явно писать, в переменную о том, что сервис должен быть перезапущен не имеет смысла, так как состояние неопределенно.
Разумеется, не нужно писать 10 плейбук, отличающихся одним словом. Нужен один плейбук с переменной, куда вынесено это слово. И которая может принимать любое заданное вами значение.
Дружище, не душни! Вопрос не про построение архитектуры!!! А просто про выбор варианта Давай представим, что это - обычная задача на экзамене по ансиблу. Надо вывести 2 раза пользователю запрос числа, потом произвести набор арифметических операций в зависимости от введенных чисел и вывести результат. Так пойдет?
ну я вам еще раз отвечу, ansible не про интерактивный ввод. Модулем shell или prompt можно передать значения, а их уже передавать от ситуации Хотите тегом запускайте , хотите переменными
Ансибл не интерактивная хрень
В интерактивный ввод ансибл тоже умеет, если что. vars_prompt
так я написал про promt
А запросить у пользователя или через меню - это вообще харам? Еще один более дебильный пример. Мне надо накатить на серваки pre-prod, dev, uat разные версии допустим php/python/brainfuck. Я могу запустить плейбуку с параметрами -l dev-servers -t 7.0 -l uat-servers -t 8.0 -l pre-prod-servers -t 9.0 Или мне надо каждый раз лазить в файл менять переменные. И какой же вариант я выберу?
Так эти разные версии все равно сводятся к json словарям
ДА ЛАДНО! У него есть теги, у него есть передача переменных через командную строку, он может в процессе выполнения забирать данные у пользователя. Это все не костыли, это вшитые функции для того, чтобы он был интерактивным. Если лично ты не используешь эти возможности, то не значит, что движок так построен.
Это надо на ущербных вещах, типа cisco и прочего сетевого Г, где просто не может быть по другому , только через такой говно интерактив. Где состояние системы - это вообще абстрактная вещь
Можно параметры тоже через командную строку передавать. -e gr=dev-servers -e my_version=8.0
Я понял, это что то религиозное. У инструмента есть куча шикарных возможностей, но мы их не будем использовать дабы не нарушить какие то заповеди Ктулху.
Можно использовать. Но теги тут точно плохой вариант как раз
тут нет заповедей. Есть две истории - первая автоматизация как угодно и чем угодно и тут вы можете делать , что вам в голову вздумается. Есть система управления конфигурацией , где накладываются определенные требования. Когда вас команда или прошло пол года, что бы не искать в любимом башеке, а что я там вообще запускал, то удобно эту историю увидеть в git например.
Так с этого и начинался вопрос. У нас есть несколько плейбуков/ролей, которым иногда передаем при запуске что то через теги или экстраварсы. Кто то иногда ошибается при наборе слов, да и вообще лениво. У меня стрельнуло в голову просто добавить готовые словари с выбором нужного варианта. И весь вопрос: как правильнее, через теги/экстраварс-ы или через менюху?
Ансибл не лучший инструмент для scm. Накатить пакетики на машинку и запаковать ее в образ - это не scm
Ну так то да, но что модно и популярно с тем и работаем
Мы живем не в мире волшебных единорогов, какающих мармеладками. У кого то нет денег на определенные продукты, у кого то ИБ лютует и непроверенное говно нельзя. Скрипт показал, его проверили - ну ок, работай. Ты не можешь в определенных контурах или на определенных тачках даже VSC поставить, правишь ямлы через vi. Решаем задачи с теми ограничениями, которые накладывают заказчики
Скрипт можно на баше написать. Какую задачу тут решает ансибл?
Некоторые вещи на баше писать раз в 20 дольше, чем на ансибле страницу накатать. Инструмент мега-удобный для кучи задач, особенно в сильно ограниченных средах
Ансибл - это вообще не SCM. Но с его помощью можно делать задачи для SCM
Ок, принял
Откройте для себя VSCode over SSH
Когда есть "жирный" заказчик, который загоняет тебя в очень узкие рамки, а тебе надо в разумные сроки настроить и проводить работы на десятках серверов, то ансибл будет и SCM-ом и всем чем можно.
У тебя есть ОЧЕНЬ замкнутый контур, через впн-ы, несколько терминальных серверов и т.д. Там кто то развернул линуксовые машины, на одну дали тебе доступ, на ней же стоит ансибл. Наружу вытащить оттуда ты ничего не можешь, в инет доступа нет. На этот сервак может положить что то доверенный человек после проверки ИБ-шниками, ты сам этого сделать не можешь. И где там как работать с vscode over ssh?
Норм хоть платят? Поверь работы хватает и без этого геморроя )
К серверу есть доступ по SSH?
Да, естественно. И работа очень интересная, и стэк офигенный, и корпоративные плюшки и офис в 254 метрах от дома. Ради такой работы можно некоторые неудобства по одному проекту потерпеть. Не каждый день такие задачи
Конечно же напрямую нет! Там трындец какие сложности через кучу виндовых терминалок, а с последней уже на линуксовую тачку по ssh коннектишься. Попытаешься обойти ИБ - сразу с вещами на выход. Соглашение подписал - пожалуйста исполняй. Тебе за это неплохо платят
Ну, тогда продолжайте страдать. О чем речь тогда?
О чем речь? Вопрос был про интерактив. А весь этот офтопик нафига выпытывали - я х.з 😂😂😂😂
Обсуждают сегодня