Timur
Первый список: mysql_databases: - name: first_db encoding: latin1 collation: latin1_general_ci login_host: dfsf login_port: 3306 - name: seconf_db encoding: latin1 collation: latin2_general_ci login_host: 45grsg login_port: 3306 ... и т.д.
Timur
Второй список: mysql_users: - name: example1_user host: "first_host" password: Sime32-SRRR-password priv: "example1_db.*:ALL" - name: example2_user host: "second_host" password: Si2rrrs-SRRR-password priv: "example2_db.*:ALL" ... и т.п.
Denis
mysql_users: - name: example1_user host: "first_host" password: Sime32-SRRR-password priv: "example1_db.*:ALL" - name: example2_user host: "second_host" password: Si2rrrs-SRRR-password priv: "example2_db.*:ALL" - name: example1_user host: "second_host" password: Sime32-SRRR-password priv: "example1_db.*:ALL"
Denis
error скажет что дубль key и возьмет последний
Timur
Тогда хосты выносите в отдельный список
Denis
выносить таскт в блок запускать его по dict host
Denis
внутри как понимать что пользователь принадлежит этому хосту
Timur
В цикле по хостам
Timur
А в тасках вон те два таска выше, с лупами по юзерам и базам
Denis
тогда получим на всех машин одинаковый набор данных?
Denis
то есть БД юзер
Timur
Да :)
Timur
Но вы можете сделать вложение
Timur
Словарь из хостов
Denis
т.е группу?
Timur
host1: mysql_databases: - name: example1_db ... mysql_users: - name: example1_user ... host2: mysql_databases: - name: example2_db ... mysql_users: - name: example2_user ... ...
Timur
Типа такого
Timur
И делаете луп типа subelements
Denis
спасибо буду пробовать
Timur
Вот тут хороший пример есть: https://docs.ansible.com/ansible/latest/plugins/lookup/subelements.html
Timur
Почти под ваш случай
Timur
Только там наоборот - набор юзеров с сервером для каждого
Denis
да то что надо
Alex
Это прям писец какой-то😂
Asten
Дядьки помогите разобраться) я уже вроде все попробовал но решения не нашел
Asten
blabla: {{ var }}{% if some_var|length > 1 %}-{{ next_var }}{% endif %} blabla2: {{ new_next_var }}
Asten
получаю вывод все в 1 строку
Asten
что тебе не понравилось?)
Asten
пробовал #jinja2: trim_blocks: False
Asten
но тогда получаю очень много пустых строк в конфиге
Timur
что тебе не понравилось?)
Не люблю джинджу в коде ансибла
Timur
Напоминает попытку программирования на yaml
Asten
Не люблю джинджу в коде ансибла
дак а как ты рендеришь конфиги без жинжи?
Timur
дак а как ты рендеришь конфиги без жинжи?
А это конфиг? По описанию ничего непонятно
Max
дак а как ты рендеришь конфиги без жинжи?
пишешь шаблон. пользуешься модулем template как нормальный примат.
Asten
а ок, сорян думал это понятно) это template конфига
Asten
просто кусок из него
Timur
Тогда проблема не совсем к ансиблу относится
Timur
Скорее, к знанию jinja-темплейтов
Asten
а помочь то сможите?) я готов подписать кровью незнание жинжа темплейтов)
Asten
в гугле решения не нашел поэтому я тут
Timur
Можно, как в шаблонах issues на гитхабе? Code: ... Expected result: ... Actual result: ...
Asten
Не очень понятно, в чем проблема
я писал выше. у меня в темплейте это 2 строки, в итоговом конфиге я ожидаю тоже 2 строки
Max
а как вызываешь template?
Max
код вызова в студию.
Asten
Code: blabla: {{ var }}{% if some_var|length > 1 %}-{{ next_var }}{% endif %} blabla2: {{ new_next_var }} Expected result: blabla: неважно что blabla2: не важно что Actual result: blabla: неважно что blabla2: не важно что
Max
я попросил код вызова модуля.
Asten
я не просил код шаблона
ты не туда воюешь
Max
ты не туда воюешь
какие параметры ты передаешь в template.
Max
(если бы знал в чем дело, то не спрашивал бы тут 🤣)
Asten
какие параметры ты передаешь в template.
ты про значения переменных чтоли?
Asten
или про таску?
Asten
ничего нестандартного
Max
что ты передаешь кроме src & dest?
Max
в пайшарме у тебя как новые строки переходят - по юниксовски или по виндосовски?
Max
\n || \r\n
Max
в шаблоне как установлено?
Timur
Скорее всего - да, проблема в переводах строки
Timur
Max
проблема в переходе. смотри, чтобы новые строки были одинаково определены с системой.
Max
или {%- if .... %}
Asten
и с костылем в конце {{ ‘ ’ }} тоже будет