Sergey
Если A,C,A,C - это не Ансибл, а антипаттерн какой-то.
Aleksey
могу сказать, как бы поступил я. есть опыт написания вычурного кода а ансибле. такого, когда полностью меняется среда исполнения: все параметы, все хосты, весь инвентарь, все читается из yml базы, парсится, найденные индексы передаются во вложенные плеи. но сейчас я бы просто внешним скриптом на питоне засосал бы этот ямл, и переписал его как нужно. скрипт без change, и это сильно упрощает кодомолотилку ансибла
Aleksey
тут вы изменили задачу. если в исходном файле правильный порядок, то вообще ничего менять не надо. просто читаете и подставляете в цикл
Aleksey
они именно для этого и предназначены!
Aleksey
ща пороюсь в коде...
Антон
Sergey
Если разные хосты - то есть смысл.
Но я только повторю свою мысль: если есть система, которая знает всё о порядке, группах и параметрах - пусть генерирует плейбук, чего ей стоит?
Антон
Sergey
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 списко ролей назначенных для этого хоста. ну, вас не хост нужен, но ход такой
Антон
Sergey
Aleksey
Aleksey
Sergey
Что обёртывает? Ансибл?
Антон
Что обёртывает? Ансибл?
Оставь, человек на своей волне =) ему одно и тоже решение у одного нравиться у другого нет )
Aleksey
это офигенно сложная тема. примерно такая же как тема "ансибл не язык а просто инструмент" у системы нет выработанных синтаксических правил, она растет не как язык, а по прихоти разрабов. и все такие кодовые решения скорее всего рано или поздно посыпятся.
Антон
Sergey
Sergey
Нет: я ею не пользуюсь.
Aleksey
Антон
ааа... ну это ж приходит с опытом и седыми волосами при кривых деплоях )))
Sergey
Антон
вот тогда ты достаешь паренты и понимаешь что их не зря придумывали
Антон
чем проще решение, тем оно надежнее работает
Aleksey
у каждого свой путь ошибок) с другой стороны, кто не пробует. того не тошнит от шампанского)
Sergey
Антон
да. если пока это понимание не пришло, значит в жизни не было сложных и/или важных систем систем на обслуживании
Антон
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
сейчас я бы модуль слепил)
Aleksey
спасибо! приятно слышать такое. но я до осени ангажирован. да и старый я уже)
Vlad
Что значение переменной можно сохранять между запусками
Vlad
В кеше ансибла
Vlad
Кеш может протухнуть
Aleksey
Взаимно! Может и заофлаемся как-нибудь)
Vlad
Долговременный кеш будет стейтом
Vlad
Какого кода? По умолчанию кеширует на сутки, надо больше - можно увеличить
Timur
Даже в доке описано
Vlad
Придумать сохранять в файл ума много не надо
Vlad
Что потом? Прочитать из файла?
Vlad
Да те-же проблемы что и при параллельном чтении/записи файла
Антон
Timur
Вы чего творите-то?
Aleksey
Timur
Какой ещё стейт в ансибле и зачем?
Timur
???
Антон
???
Чувак решил тут собеседования проводить
Антон
5 за идею, 0 за реализацию :)))
Vlad
Да, чсв у чела зашкаливает
Timur
Пардон?
Timur
Какая задача решается?