Timur
Добрый день, попробовал разные вариации с пробелами,результат один и тот же
А если просто вот так? - name: create glaster volume gluster_volume: name: swarm-vols replicas: "{{ gluster_replicas }}" bricks: "/gluster/data" state: present force: yes cluster: "{{ groups['glusterfs'] }}"
Pavel A.
гайз, туплю, подскажите, плиз, как передать следующие параметры через -e при запуске плейбука bgp_addr: private: - 10.0.0.1 - 10.0.0.2 - 10.0.0.3
Vlad
в виде json
Pavel A.
спасибо, а если без json. как это должно выглядеть? вообще есть такая возможность? Что-то вроде: -e 'bgb_addr.private=127.0.0.1' или -e '{"bgb_addr.private": [127.0.0.1]}'
Timur
Но там нюансы с escape-символами могут быть
Timur
Нужно тестить
Timur
А так - да, должно работать
Pavel A.
вот что-то не заводится каменный цветок((
Pavel A.
еще пробовал в таком формате: -e '{"bgb_addr": {"private": [127.0.0.1, 127.0.0.1, 127.0.0.1]}}' не кушает
Timur
Чекайте синтаксис, что тут скажешь
Timur
Pavel A.
Адреса не в кавычках
сейчас попробую, спасибо)
Pavel A.
завел, проблема в кавычках, спасибо @vadikgo
citius
господа, я в замешательстве. вот такой код: - debug: var=traefik_custom_config - name: config traefik_custom_config (if defined) consul_kv: key: "{{ item.key }}" value: "{{ item.value }}" loop: "{{ q('dict', traefik_custom_config ) }}" when: traefik_custom_config is defined в рассматриваемом случае traefik_custom_config не определено, что подтверждается выводом дебага: TASK [debug] *************** ok: [192.168.2.13] => traefik_custom_config: VARIABLE IS NOT DEFINED! но при этом таск падает: TASK [config traefik_custom_config (if defined)] *********** fatal: [192.168.2.13]: FAILED! => msg: 'An unhandled exception occurred while running the lookup plugin ''dict''. Error was a <class ''ansible.errors.AnsibleError''>, original message: with_dict expects a dict'
citius
как это блин понимать? :D
Sergey
как это блин понимать? :D
Так и понимать. Шаблонизатор вначале съедает loop и на нём обламывется, до реального выполнения не доходит.
citius
а, я по моему тормоз. loop раньше выполняется,а when на условия.
citius
точняк.
citius
надо заканчивать кодить по ночам. сорри )
Sergey
ничего страшного 😊
Vladislav 👻
Так стоп, вроде отступы и место корректное, почему луп раньше то?
Vladislav 👻
А блин, он одновременно работает, через omet надо получается
Vladislav 👻
Хотя мне казалось, у меня такая связка работала корректно 🤔
Vladislav 👻
Наверно особенность q()
citius
она работает корректно в обратном случае, когда надо открутить цикл, и выполнить таск если некое условие совпадает с тем что цикл принес. причем у меня в соседнем же таске так и есть )
citius
лол. прям комедия. пробую обернуть в block, чтобы сначала проверить условие, а потом входить в цикл. вот это работает нормально - скипается. - name: config traefik_custom_config (if defined) block: - debug: msg='123' when: traefik_custom_config is defined а вот это - по прежнему падает. - name: config traefik_custom_config (if defined) block: - name: config traefik_custom_config consul_kv: key: "{{ item.key }}" value: "{{ item.value }}" loop: "{{ q('dict', traefik_custom_config ) }}" when: traefik_custom_config is defined как мне запустить цикл по условию существования переменной?
Sergey
Ты хочешь странного. Не надо так.
Sergey
Твой вопрос решается элементарно: словари с конфигами сливай в один большой список словарей.
Sergey
Тогда если дополнительных конфигов нет - этот список будет пуст, with_items ничего не будет делать.
Sergey
Если в нём что-то будет - вперёд и с песней.
Sergey
Типа вот такого: https://pastebin.com/NndBQ1yh
Sergey
Сразу не нужны никакие условные операторы и вот это вот всё.
citius
да, я понял идею. у меня сейчас основная часть конфига приезжает файлами, а в консул идет оверрайд. но видимо проще вообще все перевести в консул.
Sergey
Так-то да. У меня на проекте сейчас в консул заливается вот что: "{{ consul_data | to_yaml }}" 😃
citius
т.е. в роли лежит базовый конфиг в виде словаря. при нужде доп. конфига в проекте объявляется traefik_custom_config, который если существует, мерджится в основной, и потом уже вся портянка едет в консул. такая должна быть логика?
Sergey
В целом да. На предыдущем проекте я делал объединение по convention: достаточно было объявить collectd_group_<groupname>, чтобы этот конфиг подтягивался для всех хостов данной группы. Ну и для хоста, конечно: collectd_host_<hostname>.
citius
спасибо, попробую.
Sergey
Pretty забыл
Консулу ровно.
Vladislav 👻
Да им всем обычно ровно, для людей просто так себе
Vladislav 👻
Плюс выкидывается лишнее и вроде как последовательность соблюдается
Vladislav 👻
Кстати, это тот самый момент, когда меня немного разорвало... Yaml не говорит про последовательность, в то же время, описание ansible на yaml - это конкретная последовательность 🤔
Vladislav 👻
Хотя может я просто ослеп и увидел только переставление словарей, а не листов 🙈
Sergey
Хотя может я просто ослеп и увидел только переставление словарей, а не листов 🙈
Питонячий список, лист - не меняет порядок элементов. Словарь, дикт - не гарантирует. В 3.6 что ли запилили сохраняющие порядок искаропки словари.
Vladislav 👻
Это я знаю
Sergey
С очень большой вероятностью именно поэтому, кстати, в Ансибле плейбуки - списки.
Vladislav 👻
Бррр, сорри, баги
Anonymous
Всегда рад помогать людям
Sashko
Всегда рад помогать людям
А че имя фамилия не по уставу наоборот написаны, товарищ майор?
Anonymous
Hi,How to use dynamic inventory feature in vmware environment?
Anonymous
I need to collect inventory from vmware dynamically is it possible?
Timur
Yes, it is. You can use vmware inventory script
Timur
Look here: https://docs.ansible.com/ansible/latest/user_guide/intro_dynamic_inventory.html#other-inventory-scripts
Anonymous
Hoo thats cool thanks for the information let me try
Артем
коллеги, всем привет! вопросик возник. есть переменная в group_vars, есть она же в host_vars у некоторых хостов. как брать переменную, чтобы она бралась из host_vars если там есть, но из group_vars, если нет в host_vars?
Sergey
Так по умолчанию работает.
Sergey
Искаропки.
Артем
вот я тоже так думал, но чёто нет =(
Sergey
вот я тоже так думал, но чёто нет =(
Всё-таки да. https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html#variable-precedence-where-should-i-put-a-variable
Sergey
Это, кстати, не относится к частям словарей (dict'ов).
Alexander 🐕
Привет! Коллеги, как вот здесь правильно экранировать {{ и }}? grafana_dashboards: - file_name: dashboard dashboard_name: Nginx panels: - name: "Reqs rate (on all instances)" stack: "true" fill: 8 gridpos_x: 0 gridpos_y: 0 gridpos_w: 12 gridpos_h: 10 targets: - expr: "sum by (instance)(irate(nginx_http_requests_total[5m]))" legend_format: "\{\{instance\}\}"
Alexander 🐕
В стонике все работает, в энсибле нет 🙁
Alexander 🐕
Рецепты из интернета помогают плохо
Sergey
unsafe не работает?....
Марат
сколько людей считают что в ансибле творится магия) ничего не работает)
Alexander 🐕
raw/endraw не работает
Alexander 🐕
А unsafe - пока не знаю, сейчас проверю
Марат
Sergey
ну я raw и не предлагал.