Ievgen
но все равно его надо распотрошить
Ievgen
обьект я имею ввиду
Vadim
yep
Vadim
вместо match лучше наверное equalto - зачем почем зря регексп дергать
Ievgen
у меня кстати этот долбаный equalto никогда не работал почему то
Ievgen
толи ан тех системах где я гоняю jinja не та толи хз
Pavel
пробовал equalto. думал в нём проблема. заменил {{ var1 | selectattr ("checksum", "match", "123") | list }} тут на последнюю круглую скобку ругается. пакета точно не надо никакого как jmespath?
Vadim
я обычно пробую три раза, а потом пишу свой питоновский фильтр =)
Ievgen
после появления json_query нафиг не надо
Ievgen
последнюю круглую скобку ругается. пакета точно не надо никакого как jmespath? для этого нет, это не jmespath
Pavel
я начал с json_query но с вложенными переменными беда
Ievgen
покажи таск целиком
Ievgen
нормально там с переменными )
Ievgen
вынести query в: vars: query: "some json query with {{ variable }}"
Pavel
msg: {{ var2| json_query (\"files[?checksum=='sha5'].path\" }} vars: sha5: "{{ var1 | json_query ('files[].checksum') }}" возвращает пустое msg : []
Ievgen
запихни квери в варс
Ievgen
и фильтруй через |json_query(query)
Pavel
msg: "{{ var2| json_query ('query') }}"
Pavel
в результате так?
Ievgen
без кавычек
Pavel
я кстати так делал
Pavel
тоже пусто было
Ievgen
json_query(query)
Pavel
сейчас полностью на pastebin помещу
Ievgen
http://jmespath.org/ ебани сюда свой json и подергай квери для начала
Ievgen
я кстати не уверен что получится зафильтровать по значению checksum
Pavel
уже получалось если указать точное значение . а переменную не хочет использовать для фиьтрации
Ievgen
как ты делаешь?
Pavel
https://pastebin.com/EEsEbuRK
Ievgen
у меня работают такие конструкции: vars: query: "[?(contains(something, '{{ variable }}') || contains(something, 'all'))].some"
Pavel
вот так сработало вывело только path столбиком - name: write to file copy: content: "{{ result2 | json_query (sha2)}}" dest: "/root/list2.txt" vars: sha2: "files[?checksum=='36f1fd1097e64c5533d020fa516299c'].path"
Ievgen
ну если это то что нужно то гут
Pavel
нет :) мне нужно было не задавать значение checksum явно, а передать значение переменной
Ievgen
qww не? vars: sha2: "files[?checksum=='{{ your_checksum_variable }}'].path"
Ievgen
все остальное так же как и раньше
Pavel
всё равно жалуется. "msg": "the field 'args' has an invalid value ([]), and could not be converted to an dict. Error was: Expecting: rbracket, got: number: Parse error at column 21, token \"9\" (NUMBER), for expression:\n\"files[?checksum=='[u'9c8a5dffdae35bc7aa4e19309fa21169ff5fea31']'].path\"
Pavel
содержимое переменной your_checksum_variable проверял ok: [localhost] => { "msg": [ "9c8a5dffdae35bc7aa4e19309fa21169ff5fea31" ] }
Aleksey
вообще миф про баги в ансибле — не миф. люди которые говорят что багов нет не лезли сильно глубже модуля apt/template/shell
Aleksey
это никак не относится к тексту выше. просто размышления вслух.
Vadim
баги есть везде, пока жив последний пользователей. В самолетах первой мировой, например, багов больше нет
Alex
А существует ли способ не копировать файлы модулем "copy" если их нет, кроме как игнорировать ошибки?
Aleksey
проверить есть ли файлы и если нету не копировать
Alex
Хочется просто 🙂 Сейчас конечно буду делать проверки. Привет Лёша 🙂
Aleksey
Здравствуй Саша
Александр
Алексей
Народ, подкиньте идею, пожалуйста. Есть роль которая разворачивает кластер монги на трёх хостах. Как мне собрать uri кластера (вида mongodb://host1,host2,host3) и передать в другую роль?
Александр
Используй Jinja loop
Алексей
Используй Jinja loop
спасибо, посмотрю
Sergey
или {{ groups['monga'] | join(',') }}
Sergey
поправил, там join без t в конце должно быть, очепятка
Vadim
joint(',') всё же хорошее имя для петпроджекта
Александр
Да, используй joint и читай доку по jinja
Aleksey
конечно неймспейс сильно засран js-ерами
Max
превед. хочеццо странного - при запуске плейбука первым делом проверять версию оси, и при несоответствии не выполнять плейбук. есть понимание, как задавать условие к роле/таску через when, а как в плейбуке проверку сделать в начале? просто таск с проверкой условия и если нет, то дальше не станет выполняться?
Aleksandr
через факты
Aleksey
я вот выше скидывал как раз такую проверку
Aleksey
https://github.com/nocproject/ansible_deploy/blob/microservices/noc_roles/pre/tasks/checks.yml
Max
через факты
вида when: ansible_os_family == "RedHat" and ansible_lsb.major_release|int >= 6 ага
Max
https://github.com/nocproject/ansible_deploy/blob/microservices/noc_roles/pre/tasks/checks.yml
ну вот да. я об этом и спрашивал - делать таск на проверку соответствия.
Max
спасибо)
Aleksey
покругу пошли :)
simplemice.eth
не надо снова про нок )))
Womchik
мне тоже интересно что это?
🏳️ Phil
нок это точно не стоник
simplemice.eth
товарищи, погуглите кому интересно про нок, не надо поднимать эту тему тут снова
Womchik
то есть он реально существует?
Ievgen
впилили недавно красоту
Aleksey
- meta: end_play when: твое_условие
ой. а какие еще есть ?
Ievgen
http://docs.ansible.com/ansible/latest/meta_module.html
Aleksey
continue ? end_role ?
Aleksey
noop flush_handlers refresh_inventory clear_facts clear_host_errors end_play reset_connection
Aleksey
о!!
Aleksey
noop быстрый ?
Ievgen
хз