Lamobot
Скажите когда на salt придет пора переходить ;)
Aleksey
Aleksey
Sergey
В принципе, за 6 лет изучения мне не хватает только одной точки интеграции - я хотел бы загружать свои функции в Jinja.
Половина вычурной срани из шаблонов просто исчезла бы, и стала нормальными dict/list comprehensions в питонячьем коде.
inqfen
Aleksey
Sergey
George
Пока нет изоляции, нельзя получить нормальный dry.
Aleksey
Sergey
Aleksey
Правда в джанго темплейтах но не думаю что сильно сложнее
Aleksey
Sergey
У меня в ноке был тег {{python}}
Сама по себе это не проблема - вгрузить функцию в глобальный контекст Jinja. Проблема в другом - куда её положить, чтобы автозагрузчик нашёл, и чтобы джинджа-контекст был доступен.
Vitalii
Кто-то работал с инвентори плагином для Ажура?
Как сделать так, что бы если в tag к виртуалке велью разедлен, например, запятой, в инвентори создавались две группы вместо одной?
George
Если бы я дизайнил роли, то у меня были были бы vars/global.yaml и vars/local.yaml, и локальные переменные за пределами роли были бы недоступны. То же самое касалсь бы register_local и т.д.
George
Ты просто не понял о какой изоляции речь. Не хоста от хоста, а роли от роли.
Andrii
Всем привет, ребят может у когось есть мануал как Ансиблом установить docker и на него поставить Apache
inqfen
...
Andrii
Я учусь если что )
Grek 🇺🇦
George
А зачем изоляцию в языках программирования делают? Я вот читаю, что при наличии хорошей изоляции имя переменной ip а пределах пары тасок вполне разумно.
Aleksey
inqfen
Ну можешь динамически его каждый раз составлять
inqfen
- name: "find files"
find:
paths: "archives/"
recurse: true
patterns: "*zip"
register: "files"
inqfen
Ну сорт оф, а там в files['files'] будут файлы, у каждого есть path
Sergey
Arturd
George
Не используйте переменные. Особенно в register, да?
George
Register не только для when используется, кстати.
Sergey
Если рядом с вызовом роли явным образом записаны её параметры - нувыпонели. Хоть заперекрывайся.
George
Ты о чем вообще? Если у нас две независимые роли, а у одной переменная ip в vars, а у другой в defaults, что нас ждёт на выходе?
Aleksey
@amarao про https://amarao-san.livejournal.com/3471918.html
я для нока притащил тестирование плейбуов не смотря на сопротивление автора
Aleksey
Aleksey
это предсказуемо
Sergey
George
Если одна роль сделает set_fact или register, это перекроет переменную другой роли. Даже если эта переменная не планировалась для exposure и была использована в переменных таски.
Aleksey
Aleksey
George
Я знаю как с этим жить. Но это не отменяет того, что если бы переменные можно сделать локальными, то жить было бы легче
Aleksey
это значительно повысит требования к разработчику плейбука
Aleksey
особенно тяжело будет сетевикам (с)
Sergey
George
Может.
Sergey
https://docs.ansible.com/ansible/2.5/user_guide/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable
George
set_fact имеет выше приоритет, чем vars роли, здрасьте
George
Именно там и написано. RTFM, как говорили в моей молодости.
Sergey
Да, не туда посмотрел (cached set_facts).
George
Я только что проверил ещё более ужасную вещь. Если у одной роли foo в vars, а у второй в defaults, то обе наслаждаются значением из vars. Даже если обе роли не планировали expose значений.
Sergey
Только вот незадача насчёт параметров роли, о необходимости использования которых я писал: они перекрывают всякие register, set_facts и прочие неидемпотентные поделия.
George
cat ./role1/defaults/main.yaml
---
foo: 1
cat ./role1/tasks/main.yaml
---
- debug: var=foo
cat ./role2/vars/main.yaml
---
foo: 2
cat ./role2/tasks/main.yaml
- debug: var=foo
cat ./play.yaml
---
- hosts: localhost
gather_facts: false
roles:
- role1
- role2Вывод - 2,2
Sergey
И?.....
George
И если две роли случайно не зная про друг друга назвали переменную одинаково (и не планировали её к использованию за пределами роли), то случится ... казус.
George
Сюрприз, set_fact побеждает параметры роли.
Sergey
George
cat ./role1/tasks/main.yaml
---
- set_fact:
bar: role
cat ./role2/tasks/main.yaml
---
- debug: var=bar
cat ./play.yaml
---
- hosts: localhost
gather_facts: false
roles:
- role: role1
- role: role2
vars:
bar: params
George
Никакого issue, по ссылке же сказано, что facts и register побеждают всё, кроме -e
George
issue нет, wtf'а полные штаны.
George
Хотя нет, ты прав. Они утверждают, что role params побеждают. Но это не так, и я всегда считал, что facts побеждают всех (как оно и есть)
George
Я сейчас поигрался, только include_role/vars имеет больший приоритет, чем факты. (Что добавляет ЕЩЁ один слой WTF'а). И я понял за что я ещё больше не люблю include'ы.
George
(перепроверил - в 2.10 так же). Enjoy your Ansible. It's better than Covid.
Sergey
Sergey
---
- hosts: localhost
gather_facts: false
roles:
- role: role1
- role: role2
wtf: true
- hosts: localhost
gather_facts: false
Sergey
Без ключевого слова 'vars'
George
Так можно? Я такой формы никогда не видел. Проверю как освобожусь.
Sergey
Можно. Именно это и есть role params.
Sergey
Ну и вот это вот: https://docs.ansible.com/ansible/latest/reference_appendices/config.html#default-private-role-vars
Sergey
Enjoy your Ansible responsibly :-)
Grek 🇺🇦
https://docs.ansible.com/ansible/latest/user_guide/playbooks_reuse_roles.html#passing-different-parameters
а это тогда как понимать?
Sergey
Grek 🇺🇦
хах, а в старых доках именно такой, как ты указал формат
https://docs.ansible.com/ansible/2.5/user_guide/playbooks_reuse_roles.html#using-roles
Sergey
Но вообще начал вот с этого: https://github.com/ansible/ansible/issues/69388. Один-в-один issue. Я прост знаю, что ансибл писали и пишут достаточно умные люди (bcoca, в частности).
Sergey
Aleksey
22:47 пятницы. самое время написать что нить на ансибле