Привет! Парни, я тут хотел спросить очень странный вопрос. Ансибл -

очень своеобразный инструмент и имеет кучу подводных камней, которые не видны пока не набьешь шишек. Поэтому хочу посоветоваться с более опытными.
У меня на работе есть хренова куча ролей и плейбуков, имеющих 2 и более вариантов работы. Обычно запускаем плейбуку с каким то тегом и в зависимости от переданного значения что то пуллится, пушится, деплоится и т.д. А как вообще смотрите на интерактивные меню в самом начале работы? Это - бест практицес, лютый зашквар или ни то, ни другое?

44 ответов

46 просмотров

Unspeakable

Alex Lee
Unspeakable

не очень понял, что ты хотел донести

Подготовьте скрипт запуска с различными параметрами

Как говориться теги не нужны и то, что надо получить передавать через переменные в инвентаре Как по мне исключение , то, что не может быть зафиксировано .

Vladimir Zhurkin
Как говориться теги не нужны и то, что надо получи...

У тебя есть среды: дев, уат, препрод, прод. Ты тегом при запуске выбираешь, куда задеплоить. Другой вариант: среда одна, а регом релиза ты указываешь, какую версию накатить. Иногда нужно накатить более старый релиз. Третий вариант: есть несколько компонентов (фронт, бэк, апи и т.д.) и ты выбираешь с тегом установку отдельного компонента или без тега ставится все

Сергей Вышегородский
У тебя есть среды: дев, уат, препрод, прод. Ты тег...

Среды разделены на уровне инвентаря, не надо ничего выбирать

Vladimir Zhurkin
Среды разделены на уровне инвентаря, не надо ничег...

Да не в этом дело. Юзкейсов сожно придумать сотни. Это просто пример

Сергей Вышегородский
У тебя есть среды: дев, уат, препрод, прод. Ты тег...

Сразу же выглядит криво, так как для сред используются инвентари. Насчет релиза - это переменными устанавливается. Ну а вместо выбора компонентов тэгами проще использовать несколько плейбуков/ролей.

Lamobot
Сразу же выглядит криво, так как для сред использу...

>так как для сред используются инвентари. Ну ок, для сред у всех используется разделение по инвентори. Хотя это был просто пример. >Насчет релиза - это переменными устанавливается. Зачем каждый раз лазить в код и править, если можно передать при старте? Лишние телодвижения иногда бывают лишними >Ну а вместо выбора компонентов тэгами проще использовать несколько плейбуков/ролей. Плодить роли и плейбуки просто ради количества? У меня десяток однотипных операций по созданию папок, заливке имиджей, запуску контейнера. И я буду городить 10 ролей и плейбуков, отличающихся одним словом? А как же принцип DRY? Не говоря уже об отсутствии логики. Если запустил плейбуку без тегов - раскатываются все компоненты. Указал тег с именем компонента - раскатал только один. Удобно, без повторяемости, уменьшаем человеческий фактор, когда не надо в 10 ролей вносить изменения и т.д.

Сергей Вышегородский
>так как для сред используются инвентари. Ну ок, ...

Да Представь себе, указать переменную или откатится именно в git, что бы было видно кто и когда поломал прод. Если у тебя куча мелких ролей и ты не можешь их объединить в универсальную, что бы передавать состояние системы, то явно у тебя где то проблема. Еще раз мы говорим именно о состоянии системы. Явно писать, в переменную о том, что сервис должен быть перезапущен не имеет смысла, так как состояние неопределенно.

Сергей Вышегородский
>так как для сред используются инвентари. Ну ок, ...

Разумеется, не нужно писать 10 плейбук, отличающихся одним словом. Нужен один плейбук с переменной, куда вынесено это слово. И которая может принимать любое заданное вами значение.

Vladimir Zhurkin
Да Представь себе, указать переменную или откатитс...

Дружище, не душни! Вопрос не про построение архитектуры!!! А просто про выбор варианта Давай представим, что это - обычная задача на экзамене по ансиблу. Надо вывести 2 раза пользователю запрос числа, потом произвести набор арифметических операций в зависимости от введенных чисел и вывести результат. Так пойдет?

Сергей Вышегородский
Дружище, не душни! Вопрос не про построение архите...

ну я вам еще раз отвечу, ansible не про интерактивный ввод. Модулем shell или prompt можно передать значения, а их уже передавать от ситуации Хотите тегом запускайте , хотите переменными

Vladimir Zhurkin
ну я вам еще раз отвечу, ansible не про интерактив...

В интерактивный ввод ансибл тоже умеет, если что. vars_prompt

Timur Gadiev
Разумеется, не нужно писать 10 плейбук, отличающих...

А запросить у пользователя или через меню - это вообще харам? Еще один более дебильный пример. Мне надо накатить на серваки 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 словарям

George Gaál
Ансибл не интерактивная хрень

ДА ЛАДНО! У него есть теги, у него есть передача переменных через командную строку, он может в процессе выполнения забирать данные у пользователя. Это все не костыли, это вшитые функции для того, чтобы он был интерактивным. Если лично ты не используешь эти возможности, то не значит, что движок так построен.

Сергей Вышегородский
ДА ЛАДНО! У него есть теги, у него есть передача ...

Это надо на ущербных вещах, типа cisco и прочего сетевого Г, где просто не может быть по другому , только через такой говно интерактив. Где состояние системы - это вообще абстрактная вещь

Сергей Вышегородский
А запросить у пользователя или через меню - это во...

Можно параметры тоже через командную строку передавать. -e gr=dev-servers -e my_version=8.0

Vladimir Zhurkin
Это надо на ущербных вещах, типа cisco и прочего с...

Я понял, это что то религиозное. У инструмента есть куча шикарных возможностей, но мы их не будем использовать дабы не нарушить какие то заповеди Ктулху.

Сергей Вышегородский
Я понял, это что то религиозное. У инструмента ест...

Можно использовать. Но теги тут точно плохой вариант как раз

Сергей Вышегородский
Я понял, это что то религиозное. У инструмента ест...

тут нет заповедей. Есть две истории - первая автоматизация как угодно и чем угодно и тут вы можете делать , что вам в голову вздумается. Есть система управления конфигурацией , где накладываются определенные требования. Когда вас команда или прошло пол года, что бы не искать в любимом башеке, а что я там вообще запускал, то удобно эту историю увидеть в git например.

Timur Gadiev
Можно параметры тоже через командную строку переда...

Так с этого и начинался вопрос. У нас есть несколько плейбуков/ролей, которым иногда передаем при запуске что то через теги или экстраварсы. Кто то иногда ошибается при наборе слов, да и вообще лениво. У меня стрельнуло в голову просто добавить готовые словари с выбором нужного варианта. И весь вопрос: как правильнее, через теги/экстраварс-ы или через менюху?

Vladimir Zhurkin
тут нет заповедей. Есть две истории - первая автом...

Ансибл не лучший инструмент для scm. Накатить пакетики на машинку и запаковать ее в образ - это не scm

George Gaál
Ансибл не лучший инструмент для scm. Накатить паке...

Ну так то да, но что модно и популярно с тем и работаем

George Gaál
Ансибл не лучший инструмент для scm. Накатить паке...

Мы живем не в мире волшебных единорогов, какающих мармеладками. У кого то нет денег на определенные продукты, у кого то ИБ лютует и непроверенное говно нельзя. Скрипт показал, его проверили - ну ок, работай. Ты не можешь в определенных контурах или на определенных тачках даже VSC поставить, правишь ямлы через vi. Решаем задачи с теми ограничениями, которые накладывают заказчики

Сергей Вышегородский
Мы живем не в мире волшебных единорогов, какающих ...

Скрипт можно на баше написать. Какую задачу тут решает ансибл?

George Gaál
Скрипт можно на баше написать. Какую задачу тут ре...

Некоторые вещи на баше писать раз в 20 дольше, чем на ансибле страницу накатать. Инструмент мега-удобный для кучи задач, особенно в сильно ограниченных средах

George Gaál
Ансибл не лучший инструмент для scm. Накатить паке...

Ансибл - это вообще не SCM. Но с его помощью можно делать задачи для SCM

Timur Gadiev
Ансибл - это вообще не SCM. Но с его помощью можно...

Когда есть "жирный" заказчик, который загоняет тебя в очень узкие рамки, а тебе надо в разумные сроки настроить и проводить работы на десятках серверов, то ансибл будет и SCM-ом и всем чем можно.

Timur Gadiev
Откройте для себя VSCode over SSH

У тебя есть ОЧЕНЬ замкнутый контур, через впн-ы, несколько терминальных серверов и т.д. Там кто то развернул линуксовые машины, на одну дали тебе доступ, на ней же стоит ансибл. Наружу вытащить оттуда ты ничего не можешь, в инет доступа нет. На этот сервак может положить что то доверенный человек после проверки ИБ-шниками, ты сам этого сделать не можешь. И где там как работать с vscode over ssh?

Сергей Вышегородский
У тебя есть ОЧЕНЬ замкнутый контур, через впн-ы, н...

Норм хоть платят? Поверь работы хватает и без этого геморроя )

George Gaál
Норм хоть платят? Поверь работы хватает и без этог...

Да, естественно. И работа очень интересная, и стэк офигенный, и корпоративные плюшки и офис в 254 метрах от дома. Ради такой работы можно некоторые неудобства по одному проекту потерпеть. Не каждый день такие задачи

Timur Gadiev
К серверу есть доступ по SSH?

Конечно же напрямую нет! Там трындец какие сложности через кучу виндовых терминалок, а с последней уже на линуксовую тачку по ssh коннектишься. Попытаешься обойти ИБ - сразу с вещами на выход. Соглашение подписал - пожалуйста исполняй. Тебе за это неплохо платят

Timur Gadiev
Ну, тогда продолжайте страдать. О чем речь тогда?

О чем речь? Вопрос был про интерактив. А весь этот офтопик нафига выпытывали - я х.з 😂😂😂😂

Похожие вопросы

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Карта сайта