Dmitry
Artem
Pavel A.
гайз, туплю, подскажите, плиз, как передать следующие параметры через -e при запуске плейбука
bgp_addr:
private:
- 10.0.0.1
- 10.0.0.2
- 10.0.0.3
Vlad
в виде json
Timur
Pavel A.
спасибо, а если без json. как это должно выглядеть? вообще есть такая возможность? Что-то вроде:
-e 'bgb_addr.private=127.0.0.1'
или
-e '{"bgb_addr.private": [127.0.0.1]}'
Timur
Timur
Но там нюансы с escape-символами могут быть
Timur
Нужно тестить
Timur
А так - да, должно работать
Vlad
Pavel A.
вот что-то не заводится каменный цветок((
Pavel A.
еще пробовал в таком формате:
-e '{"bgb_addr": {"private": [127.0.0.1, 127.0.0.1, 127.0.0.1]}}'
не кушает
Timur
Чекайте синтаксис, что тут скажешь
Timur
Vlad
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 👻
Так стоп, вроде отступы и место корректное, почему луп раньше то?
Sergey
Vladislav 👻
А блин, он одновременно работает, через omet надо получается
Sergey
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
спасибо, попробую.
Vladislav 👻
Vladislav 👻
Да им всем обычно ровно, для людей просто так себе
Vladislav 👻
Плюс выкидывается лишнее и вроде как последовательность соблюдается
Vladislav 👻
Кстати, это тот самый момент, когда меня немного разорвало...
Yaml не говорит про последовательность, в то же время, описание ansible на yaml - это конкретная последовательность 🤔
Vladislav 👻
Хотя может я просто ослеп и увидел только переставление словарей, а не листов 🙈
Vladislav 👻
Это я знаю
Sergey
С очень большой вероятностью именно поэтому, кстати, в Ансибле плейбуки - списки.
Vladislav 👻
Бррр, сорри, баги
Anonymous
Всегда рад помогать людям
Anonymous
Hi,How to use dynamic inventory feature in vmware environment?
Timur
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
Alexander 🐕
Sergey
unsafe не работает?....
Марат
сколько людей считают что в ансибле творится магия) ничего не работает)
Alexander 🐕
raw/endraw не работает
Alexander 🐕
А unsafe - пока не знаю, сейчас проверю
Марат
Sergey
ну я raw и не предлагал.