Serge
Вот чего в ансибле действительно не хватает, чтобы на новый уровень перейти - это работы с состоянием. Но это уже отдельный очень жирный разговор за многие куски его архитектуры и разные возможные понимания стейта.
Albert
Это императивный код
А чем ансибл уже не императивен?
Serge
Убрать when, block, и похожее, и использовать просто jinja2
Ну это всё не к очень хорошему приведёт. Но одно это изменит сильно в лучшую сторону - управление видимостью переменных. Меня этот глобальный контекст бесит сильно.
Albert
Ыместо when и with_* использовать if и for
Serge
В свое время в Позитиве об это много копий поломали
Serge
В if у джинжи в общем случае слишком большая свобода. Там можно что-то вычислять. With_items - синтаксический сахар для декларативного кода
Serge
Вообще, я бы совсем убрал джинжу из плейбуков. Оставил бы возможность обращаться к элементам и всё. Там бы иметь возможность переменные дергать по имени из переменной и достаточно.
Serge
Надо смотреть на разные кейсы, конечно, но идти надо в усиление декларативности и облегчение написания своих модулей.
Serge
Декларативный и императивный код надо разделять как можно более явно.
Dmitry
программирования на конфигах срач? одобряю! :)))
Magistr
@lig11 а вы фичу ансибла с тем что переменные можно в 16 местах объявить будете реализовывать или порядок там наведете ?
Serge
Но точно будет четкая область видимости
Anonymous
чуваки, а как вы одну и ту же роль растягиваете на несколько наборов тэгов? к примеру, я хочу сделать так, чтобы один и тот же демон запускался в несколько инстансов с разными конфигами и на разных портах
Anonymous
хотел ещё спросить, а смотрю, уже всё на месте https://docs.ansible.com/ansible/letsencrypt_module.html
Serge
Есть несколько путей, зависит от того на каком уровне хочется множить.
Можно научить роль запускать N копий сервиса и кормить её списком объектов по которым запускать
Serge
Можно научить роль запускать N копий сервиса и кормить её списком объектов по которым запускать
Можно сделать N хостов с одним отличием - конфигом этого демона и одинаковым ansible_host и деплоить группой
Anonymous
не, второе не нравится
Anonymous
есть пример реализации второго варианта? каждому шагу скармливать with_items не очень хочется
Serge
Тогда учить роль тому, что сервиса N копий
Serge
не, второе не нравится
Ну оно бывает полезно не для одного сервиса, а когда правда два разных окружения в один хост пихаешь. Если сможешь изолировать, то оно даже работать так будет
Serge
Типа в main.yml инклюдишь item.yml, который рядом лежит
Serge
В main можно приготовить что-то общее перед или после include, может быть полезно
Anonymous
хм. что-то я за полгода совсем ансибль забыл. спасибо, кажется понял, что делать
Serge
Только помни, оно будет выполнять каждую операцию внутри этого файла, как будто на неё наложили этот with_items, а не по порядку всё для каждого. Это не for, это размазывание with_items по каждой инструкции внутри включаемого файла
Anonymous
чем это чревато? медленнее или мне обязательно переменную принимать в каждой инструкциия?
Serge
чем это чревато? медленнее или мне обязательно переменную принимать в каждой инструкциия?
Порядком выполнения, сайдэффектами, ну какими-то возможными. Надо учитывать просто
Joe
Привет всем помогите с докером, лабу надо сделать...😔
Joe
Знаю что не по теме
Aleksey
Чобы не задать вопрос с @ru_docker ?
Joe
Алексей Большое спасибо
Igor
Коллеги, а как копировать файл на удалённом хосте с одного места на другой?)
Igor
copy - с локального сервера на удалённый fetch - с удалённого на локальный
Igor
Command не индемпотентен
Pavel
copy: remote_src=true... (added in 2.0)
Alf 🙀
synchronize еще есть
Pavel
Оно, спасибо!
все в доках ))
Pavel
synchronize еще есть
это ж вроде не копи, а рсинк...
Pavel
и все... если просто скопировать надо, зачем что-то еще?
Pavel
я ж не спорю, можно всегда рсинком пользоваться
Alf 🙀
и все... если просто скопировать надо, зачем что-то еще?
Иногда скопировать нужно директорию. Иногда не зачем копировать если содержимое файла не поменялось
hackru
я ж не спорю, можно всегда рсинком пользоваться
Я пока copy -a не выучил, всегда рсинкал :)
Mikhail
научился делать dict из вывода stdout, порадуйтесь за меня ) set_fact: hwaddr: "{{ hwaddr|default({}) | combine( {item.item: item.stdout} ) }}" with_items: '{{ hwaddresses_output.results }}'
hackru
разве этого в фактах при setup не появляется?
Mikhail
вообще да, наверное должно быть )) но в любом случае меня давно напрягало что не могу сделать нормальный дикт
Ilya
Всем привет)
Bruno
Всем привет)
http://neprivet.ru/
Ilya
Ок! Привет, я недавно начал разбираться с ancible, подумал, что не плохо бы найти чатик по интересам, где можно было бы обраться к коллегам по различным нюансам. Как-то так!
Elinka22
Господа! А можно в анзибле сделать так - есть список айтемов, я на основе них генерю скрипты с названиями из айтемов. Как бы мне потом дёрнуть хендлеры с названиями включающие в себя измененные только айтемы?
Dmitrii
Добро пожаловать в мир Ansible
Dmitrii
😂
Dmitrii
Как только ты отходишь от Hello World — ты простреливаешь себе ногу
Elinka22
notify: {{item}}?
Там у него в нутрях оседает в качестве item только первый по списку.
Elinka22
Как только ты отходишь от Hello World — ты простреливаешь себе ногу
Так как я хотел - не сработало, поэтому я придумал ацкий мега-костыль и оно отожгло как надо
Pavel
Как только ты отходишь от Hello World — ты простреливаешь себе ногу
кто по области видимости переменных шарит: если описать переменную в var разделе роли, а использовать ее в инвентори - она будет определена?
Alf 🙀
инвентори стоит выше роли. переменные роли не будут применены т.к. инвентори о них не знает
Elinka22
у кого внутрях,
У плейбука
Pavel
нет. http://docs.ansible.com/ansible/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable
тут не совсем то - есть порядок переоперления переменных, а есть область видимости
Арсен
"если описать переменную в var разделе роли" - это где?
Max
лучше уж в dafaults
Max
что бы если что можно было в плейбуке в секции vars: переназначить
Арсен
вопрос не имеет отношения к области видимости при вызове роли инвентори переменная будет иметь значение из роли, если задана например inventory_var: "{{ role_var }}" при вызове другой роли - будет undefined
Арсен
сроду не использовал vars в ролях, только defaults даже забыл overengineering какой-то
Pavel
ну чтобы понятней было - там у меня ссылка на пакет для скачивания в роле
Pavel
оно и не должно нигде быть, кроме этой роли