Vladislav 👻
Преврати в логическую переменную pushgateway_enabled: true
Egor
да, но вдруг я крайне криворук и напишу True. Попробую сделать |lower
юзай её не как строку, а как логическую, и тогда там будет пофиг True, true, yes
Egor
но нативно лучше тогда уж юзать True
Egor
ибо так в питоне оно выглядит
Sergei
сложна. я видать что то не то делаю, сейчас так vars: pushgateway_enabled: "{{ lookup('env','PUSHGATEWAY_ENABLED')|lower }}"
Vladislav 👻
в конце | bool добавь
Vladislav 👻
превратишь в логическую
Sergei
а, понял, спасибо
Sergei
дык это, в when: .. == "true" поди надо будет ковычки убрать?
Egor
ну как бы да
Egor
тыж теперь не строку проверяешь
Sergei
да, спасибо, обнял
Timur
но нативно лучше тогда уж юзать True
В yaml принят стандарт true/false
Egor
В yaml принят стандарт true/false
бывает, я, по привычке, везде ставлю с большой буквы
Egor
чисто формально, ансибл жрёт create_key: yes needs_agent: no knows_oop: True likes_emacs: TRUE uses_cvs: false
Anonymous
Хех
Anonymous
Egor
а ты умеешь вырывать из контекста
Egor
не хочешь пойти в новостники, которые пишут "найден способ похудеть, нужно всего лишь ..."
Sergei
Нужно просто when: myvar | bool
а если ожидаю false?
Egor
:-)
Timur
а если ожидаю false?
when: not myvar | bool
Sergei
агонь, спасибо
Alex
Это в 2.8 такое появилось?
Alex
В 2.7 просто можно when: myvar
Alex
Не надо фильтр применять
Anonymous
https://docs.ansible.com/ansible-lint/rules/default_rules.html
Anonymous
E601
Aleksey
Это в 2.8 такое появилось?
да, в 2.8 более строго подошли к типизации и начали сыпать warning-ами на подобные вещи
Timur
В 2.7 просто можно when: myvar
В 2.8 тоже. Но bool спасает от выстрела в ногу
Alex
Да, помню про ворнинги, когда тестировал плейбуки на 2.8
Timur
В 2.7 просто можно when: myvar
В 2.7 если myvar - пустая строка, при таком условии вы схватите исключение
Timur
нет необходимости в bool
Если у вас в переменной строка - возможны неожиданные спецэффекты
Aleksey
В смысле?
вот так можно: variable == true но переменная 100% должна быть уже bool а не строкой
Timur
Это стилевая ошибка
Anonymous
Если у вас в переменной строка - возможны неожиданные спецэффекты
это уже другая история. уже выше писали про yes, no, False, false, True, true. Так же выше правило линта по умолчанию
Aleksey
Зря изначально вот эти yes/no вводили, так и потом получаются перлы типа when: variable == yes и вопросы почему не работает.
Aleksey
#ненадотак
так я твои же слова и пояснял )
Anonymous
просто when: variable
Anonymous
или when: not variable
Sergei
#красиводелай
Alex
просто when: variable
Variable может быть и строкой, и тогда условие сработает. Разве не так?
Anonymous
В 2.7 если myvar - пустая строка, при таком условии вы схватите исключение
если пустая строка("") или list([]) или dict({}), то это false
Timur
Aleksey
просто when: variable
вот на такое как раз в 2.8 варнинги были, вот даже issues нашел - https://github.com/ansible/ansible/issues/53428
Timur
Проверьте сами
Aleksey
нет необходимости в bool
вот собственно прямо в варнинге и описание зачем bool в этом случае: [DEPRECATION WARNING]: evaluating swap_lv as a bare variable, this behaviour will go away and you might need to add |bool to the expression in the future. Also see CONDITIONAL_BARE_VARS configuration toggle.. This feature will be removed in version 2.12
Anonymous
ну, так это просто левая строка
Anonymous
тут как бы само собой
Timur
И не будет ворнингов
Aleksey
а лучше оставить по дефолту и последовать рекомендациям )
Timur
Потому и ворнинги
Aleksey
ну так а со сравнением == true - никаких варнингов
Alex
В 2.12 вроде, а на дворе только 2.9
Aleksey
и ничего переключать не надо в конфиге
Anonymous
На пустой строке исключение валится
--- - name: test empty variables hosts: localhost connection: local gather_facts: False vars: testvar1: "" testvar2: {} testvar3: [] tasks: - debug: msg="var is true" when: testvar1 or testvar2 or testvar3
Anonymous
PLAY [test empty variables] ***************************************************************************************************************************************************************************************************************** TASK [debug] ******************************************************************************************************************************************************************************************************************************** skipping: [localhost]
Anonymous
ansible --version ansible 2.8.5
Anonymous
а до 2.12 еще дожить надо :)))
Anonymous
В смысле?
исправляюсь. да, лучше все же when: (testvar1|bool) or (testvar2|bool) or (testvar3|bool)
Nikita
Скажите, а как сохранять логи ансибла на ремут хосте? Не могу подходящий плагин найти
Nikita
То есть на каком хосте идёт плей там и сохранять
tutunak
То есть на каком хосте идёт плей там и сохранять
На хосте, на котором выполняется плейбук? А что потом с этим выхлопом на хосте делать?
Nikita
На хосте, на котором выполняется плейбук? А что потом с этим выхлопом на хосте делать?
А это заказчику решать, мой выхлоп в логстеш будет лететь
tutunak
А это заказчику решать, мой выхлоп в логстеш будет лететь
https://docs.ansible.com/ansible/latest/plugins/callback/log_plays.html а потом отдельным плейбуком с копи файл
Nikita
Время деплоя вырастает
Anonymous
коллеги подскажите как красиво сделать, есть несколько ролей, в зависимости от дистрибутива путь до конфигов другой, хотелось бы задать переменную через set_facts но так чтобы работало во всех ролях что подключенны к плейбуку
Egor
хотите эдакий аналог case, который зависит от дистрибутива или что?