MRY
Без проблем
Timur
Уверен - многим будет интересно
MRY
Рабочий день в разгаре, щас и займусь
MRY
)))
Sergey
Всем привет.
Сегодня занимался шаблонизацией конфигов для Consul самым очевидным образом - через фильтр "to_nice_json". Столкнулся с тем, что Jinja2 превращает числа в строки, от чего Консул ругается.
Пример:
{"ports": { "http": "1234" }} вместо {"ports": { "http": 1234 }}
Кто-либо боролся с такой фигнёй?
George
George
консул идиот, наверное
Aleksey
Aleksey
консул норм.
Aleksey
в 2.7 есть поддержка native types
Aleksey
тебе она нужна
Sergey
Sergey
весело.
Aleksey
упс.
тогда ничего сделать нельзя
Nklya
Похоже что таки можно
https://github.com/ansible/ansible/issues/9362
https://github.com/pallets/jinja/pull/708/
Aleksey
Nklya
начиная с 2.7
Aleksey
ну я на 2.5 знатно потрахался с этим. никак короч
Aleksey
А можно зови курл на прямую ;)
Nklya
Timur
Sergey
Фильтр int пробовали добавить?
Да, он помогает, если требуется только просто е значение. Как только нужна подстановка и что-то более-мене енетривиальное - всё, привет.
Sergey
Снова строка.
Timur
Тогда да, пичалька
citius
Andrey
два, потому что один выполняется на хосте, где запускаешь playbook (py), а powershell на управляемом компе
Andrey
начните с туториалов каких-нибудь.
Timur
Надо полную плейбуку видеть, чтобы понять
Timur
Volodymyr
Timur
Что это значит?
Timur
Павел П.
добрый.
Заметил что модуль iptables (судя по всему) не делает save.
Если стоит iptables-persistent
То хендлером вызывать
shell: iptables-save > /etc/iptables/rules.v4 ?
Или есть более правильный способ?
George
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
Хотите конструктива - давайте конкретику
Timur
Vladislav 👻
что ну и?
Timur
Установку каждого пакета описываете в своей плейбуке
Timur
И инклудаете их списком, в зависимости от требований
Vladislav 👻
я описываю в роли, а не плейбуке, плейбук дергает роль
Timur
Роль - это просто структурированный набор плейбук с параметризацией
Vladislav 👻
что? о_0
Vladislav 👻
вы что-то попутали
Timur
Я? :)
Vladislav 👻
да
Vladislav 👻
роль - это набор тасков, а не плейбуков
Timur
Vladislav 👻
окей
Vladislav 👻
еще мнения есть?