Sergey
ну, точнее "формальный" плейбук. но там нет гарантии правильно порядка, как я понял
В плейбуке плеи - это элементы списка. Таски и роли внутри плея - тоже элементы списка. Где нет гарантий порядка?
Sergey
Если A,C,A,C - это не Ансибл, а антипаттерн какой-то.
Aleksey
могу сказать, как бы поступил я. есть опыт написания вычурного кода а ансибле. такого, когда полностью меняется среда исполнения: все параметы, все хосты, весь инвентарь, все читается из yml базы, парсится, найденные индексы передаются во вложенные плеи. но сейчас я бы просто внешним скриптом на питоне засосал бы этот ямл, и переписал его как нужно. скрипт без change, и это сильно упрощает кодомолотилку ансибла
Aleksey
тут вы изменили задачу. если в исходном файле правильный порядок, то вообще ничего менять не надо. просто читаете и подставляете в цикл
Aleksey
они именно для этого и предназначены!
Aleksey
ща пороюсь в коде...
Sergey
Если разные хосты - то есть смысл. Но я только повторю свою мысль: если есть система, которая знает всё о порядке, группах и параметрах - пусть генерирует плейбук, чего ей стоит?
Lamobot
Если A,C,A,C - это не Ансибл, а антипаттерн какой-то.
По-моему, это флудеры, которые раз в месяц забегают понаписать сообщений о какой-то неясной проблеме в использовании ансибла :)
Sergey
По-моему, это флудеры, которые раз в месяц забегают понаписать сообщений о какой-то неясной проблеме в использовании ансибла :)
popcorn.gif жи, посмотрим :-) Про антипаттерны и странное в правилах чата всё уже расписано.
Sergey
Как угодно.
Aleksey
--- - name: schedule log debug: msg: "--- SCHEDULE--- {{nodeidx}} {{nodelist.node_list[nodeidx].roles}}" - name: roles loop include_role: name: "{{rolename}}" loop: "{{nodelist.node_list[nodeidx].roles}}" loop_control: loop_var: rolename
Антон
я вашу мысль тоже понял и предложил вам тоже самое что и Алексей
Aleksey
тут в некотором файле, для некотрого хоста описание в ямле, где в параметре roles списко ролей назначенных для этого хоста. ну, вас не хост нужен, но ход такой
Антон
Aleksey
popcorn.gif жи, посмотрим :-) Про антипаттерны и странное в правилах чата всё уже расписано.
да. и я от такого кода сейчас бегу) но что не зделаешь с бессонной ночи)))
Sergey
Что обёртывает? Ансибл?
Антон
Что обёртывает? Ансибл?
Оставь, человек на своей волне =) ему одно и тоже решение у одного нравиться у другого нет )
Aleksey
это офигенно сложная тема. примерно такая же как тема "ансибл не язык а просто инструмент" у системы нет выработанных синтаксических правил, она растет не как язык, а по прихоти разрабов. и все такие кодовые решения скорее всего рано или поздно посыпятся.
Sergey
Нет: я ею не пользуюсь.
Aleksey
ну так хотите язык - юзайте питон. я не понимаю этого плача Ярославны =)
это не к спору. это к тому, чтобы не спорить и не плакать потом)
Антон
ааа... ну это ж приходит с опытом и седыми волосами при кривых деплоях )))
Aleksey
Нет: я ею не пользуюсь.
стопе... я же видел вебинар на эту тему, про молекулу) нет?
Антон
вот тогда ты достаешь паренты и понимаешь что их не зря придумывали
Антон
чем проще решение, тем оно надежнее работает
Aleksey
у каждого свой путь ошибок) с другой стороны, кто не пробует. того не тошнит от шампанского)
Антон
да. если пока это понимание не пришло, значит в жизни не было сложных и/или важных систем систем на обслуживании
Антон
Aleksey
чем проще решение, тем оно надежнее работает
любое простое решение лишь вершина айсберга. в зацитировананом коде (это шедуйлер) движение к простоте породило систему большого формального описания сети и её ресурсов. вообще не ансибл. и вот на этой основе, мейкается практически статик инвентори (охеренного размера и нечитабельный от вложенной херни), но тогда ансибл-код простой и академичный)
Aleksey
Не со мной :-))))
не буду настаивать. (хотя помню)))
Sergey
не буду настаивать. (хотя помню)))
Там могла упоминаться молекула из вопросов, но о ней Лев рассказывал, если я ничего не путаю. Я тогда только про объектную модель задвигал.
Aleksey
Там могла упоминаться молекула из вопросов, но о ней Лев рассказывал, если я ничего не путаю. Я тогда только про объектную модель задвигал.
не буду настаивать) у меня просто так запомнилось. и кстати очень ценно. меня из всего услышенного удивила лишь одна тема, но она была совершенно не сабжектовая
Антон
любое простое решение лишь вершина айсберга. в зацитировананом коде (это шедуйлер) движение к простоте породило систему большого формального описания сети и её ресурсов. вообще не ансибл. и вот на этой основе, мейкается практически статик инвентори (охеренного размера и нечитабельный от вложенной херни), но тогда ансибл-код простой и академичный)
есть такой в диалогах метод - метод возведение в абсолют. таким образом можно изгадить вообще что угодно, даже самые лучшие начинания. но это офтпик. в рамках данного обсуждения задачи - сильно напрашивается разговор про изначальный процесс, есть глубокое подозрение что он .... не оптимален
Антон
слушайте, да бог с вами, что ж вы так остро все воспринимаете то...
Aleksey
так он же не сервис?
Aleksey
в контексте ансибла это только динамический инвентарь и мета - перечитать его
Aleksey
не понятно зачем на практике. хотя понятно. не понятно как красиво
Aleksey
самое сложно многопоточность. скрипт же не для одного хоста, как правило. но в принципе та же самая идемпотентность подразумевает, что каждая следующая итерация по факту использует результаты предыдущей
Aleksey
не. это скука. пусть будет так: есть инвентарь. в нем описаны хосты и существующие на них сервисы с параметрами настройки. 1. мы добавляем сервис - в итоге модифицируется инвентарь добавлением настроенного сервиса к целевому хосту - со всеми ситуациями ошибок, и вложенных вызовов ролей. 2. мы добавляем хост в систему - хост добавляется в инвентарь и последующие роли работают по плану п.1
Aleksey
по факту или плейбук куда-то скидывает yml состояни или результата, или меняет инвентарь (может чать его)
Aleksey
ямлы нормально обрабатываются в ансибле.
Aleksey
уже написал. скидываем все в ямл. и засасываем потом как include_vars
Aleksey
засосать не проблема. это легко. а вот скидывать ... ну, у меня очень низкое мнение о возможностях форматного вывода ансибла. я бы скорее всего написал свой модуль. иначе, самое простое, скидывать все, а мотом удалять скриптом по фильтру
Aleksey
)))
Aleksey
кста, можно jinja напряч. очень хорошо делает. но шаблон надо правильно приготовить
Vlad
У set_fact есть параметр cachable, который сохранит в кеш. А кеш можно сохранить в yaml/json/mongodb и т.д.
Aleksey
а я всерьез. есть опыт с фласком. шаблоны делают просто чудеса. и циклы условия. а уж подать все это из ансибла через извращения с разбором списков без проблем. но сразу предупреждаю: это тут не одобрят)))
Aleksey
сейчас я бы модуль слепил)
Aleksey
спасибо! приятно слышать такое. но я до осени ангажирован. да и старый я уже)
Vlad
Что значение переменной можно сохранять между запусками
Vlad
В кеше ансибла
Vlad
Кеш может протухнуть
Aleksey
Взаимно! Может и заофлаемся как-нибудь)
Vlad
Долговременный кеш будет стейтом
Vlad
Какого кода? По умолчанию кеширует на сутки, надо больше - можно увеличить
Timur
Если A,C,A,C - это не Ансибл, а антипаттерн какой-то.
Да не, вызов одной и той же роли с разными параметрами в одном плее - вполне изначально запланированный паттерн
Timur
Даже в доке описано
Vlad
Придумать сохранять в файл ума много не надо
Vlad
Что потом? Прочитать из файла?
Vlad
Да те-же проблемы что и при параллельном чтении/записи файла
Timur
Вы чего творите-то?
Aleksey
Это офигенная штука, я пользуюсь для динамического формирования массивов для лупов
да. оказалось неожиданно мощная вещь. как кошки, которых надо уметь готовить)
Timur
Какой ещё стейт в ансибле и зачем?
Timur
???
Антон
???
Чувак решил тут собеседования проводить
Антон
5 за идею, 0 за реализацию :)))
Vlad
Да, чсв у чела зашкаливает
Timur
Пардон?
Timur
Какая задача решается?