MRY
Без проблем
Timur
Уверен - многим будет интересно
MRY
Рабочий день в разгаре, щас и займусь
MRY
)))
Sergey
Всем привет. Сегодня занимался шаблонизацией конфигов для Consul самым очевидным образом - через фильтр "to_nice_json". Столкнулся с тем, что Jinja2 превращает числа в строки, от чего Консул ругается. Пример: {"ports": { "http": "1234" }} вместо {"ports": { "http": 1234 }} Кто-либо боролся с такой фигнёй?
George
консул идиот, наверное
Aleksey
консул норм.
Aleksey
в 2.7 есть поддержка native types
Aleksey
тебе она нужна
Sergey
весело.
Aleksey
упс.
тогда ничего сделать нельзя
Sergey
тогда ничего сделать нельзя
да, ты правильно меня понял. имеет место часть инфры, которой рулю не я.
Nklya
Похоже что таки можно https://github.com/ansible/ansible/issues/9362 https://github.com/pallets/jinja/pull/708/
Nklya
начиная с 2.7
Aleksey
ну я на 2.5 знатно потрахался с этим. никак короч
Aleksey
А можно зови курл на прямую ;)
Sergey
Похоже что таки можно https://github.com/ansible/ansible/issues/9362 https://github.com/pallets/jinja/pull/708/
Нет. Если пишешь на входе такой вот YaML: https://pastebin.com/sJ290riV, то всё ок. Как только вместо "!!int 8500" появляется выражение какое-нибудь, то мой доступный Ansible 2.4 сходит с ума и генерирует дрянь, которую Консул не ест. <offtopic>Разбор конфигов в Consul писали отбитые мудаки.</offtopic>
Sergey
Написано же что должно попасть в ансибл в 2.7
Написано же, что часть инфры - вне моего контроля, и в наличии только Ansible 2.4.
Sergey
Написано же что должно попасть в ансибл в 2.7
Извини, пожалуйста. Я сейча разочарован и растроен всей этой фигнёй, триггернулся не по делу.
Aleksey
Фильтр int пробовали добавить?
Да. Нет толку. Грабля в jinja
Sergey
Фильтр int пробовали добавить?
Да, он помогает, если требуется только просто е значение. Как только нужна подстановка и что-то более-мене енетривиальное - всё, привет.
Sergey
Снова строка.
Timur
Тогда да, пичалька
Andrey
два, потому что один выполняется на хосте, где запускаешь playbook (py), а powershell на управляемом компе
Andrey
начните с туториалов каких-нибудь.
Timur
Надо полную плейбуку видеть, чтобы понять
Timur
Volodymyr
Timur
Что это значит?
Timur
Павел П.
добрый. Заметил что модуль iptables (судя по всему) не делает save. Если стоит iptables-persistent То хендлером вызывать shell: iptables-save > /etc/iptables/rules.v4 ? Или есть более правильный способ?
George
пишите правила сразу в rules.v4, а при его изменении делайте restart iptables
George
ансиблю же умеет в watch_in
Павел П.
логично
Timur
Вот это осильте для начала: https://docs.ansible.com/ansible/latest/user_guide/playbooks_intro.html
Dmitry
как победить jinja2 шаблон, чтобы не ломалось форматирование? Есть такой код: {%set f=[1,2,3]%} {% if 1 in f %} first line { {% for i in f %} {{ i }} {% endfor %} } {% endif %} ожидаю получить first line { 1 2 3 } а получаю first line { 1 2 3 } зачем мне лишние 2 пробела перед закрывающей } ?
Dmitry
если выравнять {% for ... %} на один уровень с {% if ... то будет нормальное форматирование
Dmitry
помогло: #jinja2: lstrip_blocks: True в начале файла
Vladislav 👻
Подскажите, на сколько хорошая/плохая практика в одной роли делать зависимость от другой и использовать переменные из зависимой?
Vladislav 👻
Грубо говоря, одна роль - установка софта, а вторая роль, плагины для софта
Timur
Подскажите, на сколько хорошая/плохая практика в одной роли делать зависимость от другой и использовать переменные из зависимой?
Зависит от паттерна использования. Если установка плагинов завязана на роль - логичнее их опционально той же ролью ставить
Vladislav 👻
а если каждый плагин может иметь свою логику установки?
Vladislav 👻
т.е. нельзя просто подсунуть лист из названий и установить
Timur
Я не понимаю таких абстрактных размышлений. Напишите конкретно - в чем проблема
Timur
Попробуем помочь
Vladislav 👻
это конкретная проблема
Vladislav 👻
есть софт и плагины, просто сегодня нужно два плагина, завтра может быть 10 и каждый раз получается надо основную роль переписывать и прогонять
Timur
Зачем переписывать?
Vladislav 👻
дописывать, если быть точнее
Timur
Не нужно ничего дописывать
Timur
Просто инклудайте нужные плейбуки для плагинов списком - и все
Vladislav 👻
а если каждый плагин может иметь свою логику установки?
Vladislav 👻
т.е. нельзя просто подсунуть лист из названий и установить
Timur
Timur
Любая плейбука с тасками имеет свою логику
Timur
Ваши общие слова ни о чем не говорят
Vladislav 👻
это значит один может через гит ставиться, другой через copy, третий темплейтом
Timur
Хотите конструктива - давайте конкретику
Vladislav 👻
что ну и?
Timur
Установку каждого пакета описываете в своей плейбуке
Timur
И инклудаете их списком, в зависимости от требований
Vladislav 👻
я описываю в роли, а не плейбуке, плейбук дергает роль
Timur
Роль - это просто структурированный набор плейбук с параметризацией
Vladislav 👻
что? о_0
Vladislav 👻
вы что-то попутали
Timur
Я? :)
Vladislav 👻
да
Vladislav 👻
роль - это набор тасков, а не плейбуков
Vladislav 👻
окей
Vladislav 👻
еще мнения есть?