Timur
Значит, оттуда ничего и не попадёт в записи
Oleg
Значит, оттуда ничего и не попадёт в записи
спс. сча попробую с полными группами и с одной пустой.
Timur
По поводу первых тасков вы не ответили. Зачем они вам?
Oleg
По поводу первых тасков вы не ответили. Зачем они вам?
типо получить список и потом модифицировать, просто так как у меня отлично рабоатет, когда все группы с сервкми, стоит оказаться одной группе пустой, так файлилось
Oleg
список из серваков в каждой из групп, предполагал, что если файлится при пустой группе, то можно получить список серваков из этих групп (не важно полные или пустые) и потом уже с ним работать
Oleg
Т.е. вам нужен список серваков из групп? Ну и. Просто groups['имя группы'] - недостаточно куртуазно?
сейчас то уже надеюсь не нужен, сча ваш код попробую и надеюь на успех)
Timur
groups['имя_группы'] - выдает готовый список хостов группы. Зачем идти по нему циклом, регистрировать факты, а потом это опять в список перегонять?
Timur
У вас там задачи по армейскому принципу ставятся, что ли?
Oleg
при таком куске кода, при наличии пустой группы, такска падала на ошибку, я и начал придумывать как бы обойти пустые группы line: "10.10.10.10 {{ item }}.com" with_items: - "groups['adm']" - "groups['app']"
Timur
Если вам нужен общий список хостов нескольких групп, включайте все эти группы в одну общую и обращайтесь непосредственно к ней
Oleg
Ну, так у вас список из списков. Не надо так
поэтому и обратился к знатокам)
Timur
Тогда в общей группе всегда будет суммарный список всех хостов всех дочерних групп, даже если какие-то из них пустые
Timur
И забудьте уже про with_items ради бога!
Oleg
Тогда в общей группе всегда будет суммарный список всех хостов всех дочерних групп, даже если какие-то из них пустые
упало на ошибку, тк группы adm нет в данном примере: "msg": "'dict object' has no attribute 'adm'"
Timur
Если обращаться к несуществующим - у вас любой таск упадет
Oleg
Не, ну понятно, что ссылаться нужно на существующие группы
вот у меня все и работало, когда она была, а при отстутвие падает на ошибку( можно было бы скипнуть отстутсвующие группы
Timur
да куда
loop давно уже
Oleksandr
Timur
У вас плейбука и инвентарь не соответствуют друг другу получается
Timur
и что
и то
Oleg
Включайте все нужные в данном случае группы в общую и не ломайте комедию
а если какой ниб if else типо как на баше , что бы если в списке нет, то пустая строка/значение
Oleksandr
и то
а какие причины отказа-то? ведь налопачено хуиллиард строк с таким циклом чем продиктовано такое решение
Oleksandr
а есть где почитать про это?
Timur
а есть где почитать про это?
https://docs.ansible.com/ansible/latest/user_guide/playbooks_loops.html#migrating-from-with-x-to-loop
Oleksandr
во
Oleksandr
In many cases, loop syntax is better expressed using filters instead of more complex use of query or lookup.
Oleksandr
👍
Oleksandr
спасибо за ссылку
Oleg
🤦‍♂️
ну или например если группы нет то просто пустая строка в файле который редактируется
Timur
ну или например если группы нет то просто пустая строка в файле который редактируется
Что значит "группы нет"? Вы не знаете, какие группы есть у вас в инвентаре?
Timur
Как вы плейбуки пишете вообще?
Oleg
Что значит "группы нет"? Вы не знаете, какие группы есть у вас в инвентаре?
у нас разные среды, один список групп, но на тестовых некоторых групп нет, поэтому разные инвентари файлы
Oleg
Что значит "группы нет"? Вы не знаете, какие группы есть у вас в инвентаре?
ну и я дописываю некоторые необходимые таски уже при наличии какого т оотработанного материала, и не могу повлиять или изменять то, что уже рабоатет
Timur
у нас разные среды, один список групп, но на тестовых некоторых групп нет, поэтому разные инвентари файлы
Ну, список дочерних групп может отличаться, нет проблем. Но список основных, на которые ссылается плейбука, должен быть одинаковым
Timur
Иначе у вас банальное несоответствие плейбук и инвентаря
Timur
Обращаться к несуществующим группам - то еще занятие
Oleg
Ну, список дочерних групп может отличаться, нет проблем. Но список основных, на которые ссылается плейбука, должен быть одинаковым
ну в общем, если в плжйбуке указана группа, которой нет, то никак не skipping это? можно даже не стараться?
Timur
Такого быть не должно при нормальном подходе
Timur
Делайте нормальный инвентарь
Timur
Или приводите плейбуки в соответствие с имеющимся инвентарем
Timur
Иначе сами себе создаете проблемы
Serge
Last call! 25.02 — встреча сообщества SPb Python — последний шанс стать докладчиком! Пишите в комментарии по ссылке или прямо мне @lig11 прямо сейчас. https://spbpython.guru/news/meetup-20190225-cfp
Oleg
фигово как, было бы круто если ансибл умелбы пропускать что то не существующее)
Max
а какие причины отказа-то? ведь налопачено хуиллиард строк с таким циклом чем продиктовано такое решение
это древний вопрос до какой доевности поддерживать backwards compatibility. хороший пример - стек tcp от винды xp, в котором использовалось немало строк кода из DOS
Max
у кого нет способности обновлять роли/плейбуки на посл. версии - пусть сидит на v2.3.1.0
Oleg
Он умеет. Я выше сказал, как делать правильно
придумал! просто отдельная таска на каждую группу и ignore_errors: yes при отсутствии)))
Roman
Привет, подскажите как распарсить json такого вида средствами ансибла, безо всяких jmespath, jq: [ { "Id": "some_id", "Name": "some_name" }, { "Id": "some_id1", "Name": "some_name2" } ] А точнее зная значение какого-нибудь ключа, получить значение другого ключа этого же элемента, например: я знаю, что есть Name: some_name2, как мне достать Id: some_id1 json прилетает именно в таком формате [json_body].
Roman
https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#json-query-filter
я спрашивал как без jmespath, но видимо придется доинсталивать его и ковырять им, спасибо :)
Max
https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#json-query-filter
есть еще вариант в 2 шага: 1. загрузить фильтром load_json 2. итерация через select и т.д. с условием.
Max
или selectattr, не помню точно.
Max
просто в итерацию добавить when.
Max
а что против jmespath?
Roman
его нужно отдельно инсталлить
Max
http://www.oznetnerd.com/jinja2-selectattr-filter/
Max
надо только поиграться.
Roman
http://www.oznetnerd.com/jinja2-selectattr-filter/
да, тоже встречал такой вариант, спасибо за наводку)
Max
я не тестил код этого блога. это только наводка.
Max
а почему не вариант установить пакет? у него бинарные зависимости? вроде json в стандартной питоновой библиотеке уже давно.
Max
поставь все через virtualenv
Max
и тогда даже не испортишь системный питон с ансибловыми зависимостями
Roman
поставь все через virtualenv
ага, как вариант
Max
там только надо ansible.cfg/inventory подкрутить смотреть на правильный питон. и фсио.
Vladislav 👻
а кто как делает пересекающиеся моменты ролей? например, где прописать добавление пользователя сервиса в группу к докеру?
Vladislav 👻
я же пример написал, есть роль сервиса, в ней есть пользователь, надо этого пользователя добавить в группу к докеру