Nikolay
В модуле docker-compose можно указать темплейт в директории плейбука как project_src ?
Anonymous
"value": "pass21"
Anonymous
и так далее 22, 23
Andor
сейчас у тебя пригорит )) специально полный вывод сделал https://pastebin.com/YY3i1R7Q
а нельзя использовать не curl + jq, а например https://docs.ansible.com/ansible/latest/modules/uri_module.html + https://docs.ansible.com/ansible/latest/user_guide/playbooks_filters.html#json-query-filter ?
Anonymous
Можно, Тимур вчера заругал, сказал не православно
Andor
как минимум json_query не требует установленного jq на хосте
Timur
и так далее 22, 23
Так список нужен или одна переменная?
Anonymous
в примере выше три переменных
Timur
Так список нужен или одна переменная?
Timur
Что должно получиться на выходе?
Timur
Я не понимаю ТЗ
Anonymous
в идеале должно получиться "key_name": "test21": "value": "pass21" "key_name": "test22": "value": "pass22" "key_name": "test23": "value": "pass23»
Andor
по ссылке видно список из 3 возвращаемых сикретов
Anonymous
высокоуровнево задача звучит, что зная имя key_name я могу в шаблонах или плейбуки оперировать этими секретами
Timur
Короче, список словарей нужен?
Anonymous
подозреваю что да
Timur
- key_name: test21 value: pass21 - key_name: test22 value: pass22 - key_name: test23 value: pass23 Так?
Andor
ну там одно в другое можно преобразовать одним фильтром
Anonymous
да
Timur
да
Ок. Теперь ТЗ понятно. Щас глянем
Балин
У кого-нибудь есть опыт использования ce_ модулей для управления оборудованием huawei? у меня не ce-линейка, есть ли совместимость с s-серией? По крайней мере, ce_command работает. Есть ли разница, использовать его или network_cli?
Nariman
Всем привет, ansible не видет переменные которые были определены в gitlab проекте. Знает ли кто, как сделать так чтобы переменные которые были опредеоены в проекте Gitlab, были доступны в Ansible?
Sheridan
Други, чтото я в плагинах онсибла запуталсо... Хочу так чтобы было: - name: мойтаск my: state: absent param: 12 string: "qwe" это об action плагин делавется или ещо как?
Timur
да
Глянул. У меня получилось вот так: - name: set_fact list set_fact: output_list: '{{ output_list | default([]) + [ {"key_name":item.item.key_name, "value": item.json.data.data.value} ] }}' loop: '{{ key_value.results }}' - name: Debug output_list debug: var: output_list
Timur
@deniswork94 проверьте, это то, что вам нужно?
Anonymous
Спасибо. Чуть позже
Andor
как мне поитерировать дикт, сделать каждому элементу | combine(some_defaults) и потом вернуть получившийся дикт в переменную?
Timur
Спасибо. Чуть позже
Можно даже чуть более компактно: - name: set_fact list set_fact: output_list: >- {{ output_list | default([]) + [ {"key_name" : item.item.key_name, "value" : item.json.data.data.value} ] }} loop: '{{ key_value.results }}' - name: Debug output_list debug: var: output_list
Timur
Непонятно, что именно вызывает затруднения
Andor
ну я с жынжей пока на "вы", поэтому не знаю как это написать
Andor
ты же сказал что вопрос звучит как ответ, почему тогда спрашиваешь суть задачи?
Andor
мне результат надо получить в виде дикта в переменную
Andor
то есть надо итерировать жинжей а не ансиблом
Andor
(вроде)
Timur
ты же сказал что вопрос звучит как ответ, почему тогда спрашиваешь суть задачи?
Исходная задача неизвестна. Что за словарь, для чего нужны такие преобразования?
Sheridan
action
спасибо!
Timur
то есть надо итерировать жинжей а не ансиблом
Почему жинжей, а не ансиблом? Откуда такое требование?
Andor
есть дикт с описанием неких ресурсов, есть дикт с дефолтными параметрами ресурсов, хочу получить то плюс то
Andor
Почему жинжей, а не ансиблом? Откуда такое требование?
не знаю с чего ты взял что это требование
George
не то плюс то, а, наверное, дефолтное значение, если не переопределено основное
Timur
есть дикт с описанием неких ресурсов, есть дикт с дефолтными параметрами ресурсов, хочу получить то плюс то
Ну и? Дефолтный дикт мержится с кастомным через фильтр combine. В чем проблема-то?
Nariman
https://docs.ansible.com/ansible/2.5/plugins/lookup/env.html
Да вы правы это работает. Но дело в том что мне нужно использовать эти переменные в шаблоне j2. А там они не видны. Можно как это поправить ?
Andor
Ну и? Дефолтный дикт мержится с кастомным через фильтр combine. В чем проблема-то?
мне надо не сам диск помёржить, а значения вложенных диктов и вернуть получившийся
Andor
то есть надо поитерировать дикт и к каждому значению подмёржить дикт с дефолтными
Timur
мне надо не сам диск помёржить, а значения вложенных диктов и вернуть получившийся
Ничего не понял. Можно пример привести? Какие исходные данные и что хотите получить?
Andor
по крайней мере я себе это пока так представляю
George
{% for key,value in dict_blablabla.iteritems() %} {{ key }}: - command: {{ value[key] | default(get_value_from_dict(dict, key)) }} {% endfor %}
George
что-то такого плана
George
сорри за говнокод
Andor
nginx_http_template: | {% set res = {} %} {% for s in my_nginx_sites.keys() %} {% set combined = my_nginx_sites[s] | combine(my_nginx_sites_defaults, recursive=True) %} {% do res[s] = combined %} {% endfor %} {{ res }}
George
Ваши предложения?
Andor
что-то такое намонстрячил но это лажа
Andor
ну и не в ту сторону combine в этом случае
Timur
Ваши предложения?
Сначала нужно увидеть внятное ТЗ
George
коллега же написал
George
dict смержить с dict. Второй хранит дефолтные значения
George
насчет вложенности вопрос - там могут быть косяки
Timur
nginx_http_template: | {% set res = {} %} {% for s in my_nginx_sites.keys() %} {% set combined = my_nginx_sites[s] | combine(my_nginx_sites_defaults, recursive=True) %} {% do res[s] = combined %} {% endfor %} {{ res }}
Что это? Где исходный словарь, где кастомный? Что с чем вы хотите помержить? Как должен выглядеть результат?
Andor
у меня есть дикт диктов, у меня есть дикт_дефолт, мне надо ко всем элементам первого дикта помёржить с дикт_дефолт
Andor
ехал дикт через дикт
George
т.е. забудь, что первый это дикт диктов )
George
тогда станет проще
George
начни с вложенных. А дальше просто будешь итерировать по внешнему дикту
George
key - это условно названия сайта а value - это вложенный дикт
George
фак. Декомпозируй задачу