Alexander
Возвращается такой вот объект от API Netbox
Alexander
Alexander
И?
И всё. )
Alexander
Ну т.е. я не понимаю как фильтр записать. Например, role.slug == 'virtual-machine' исправно работает, группирует хосты в группу 'virtual-machine'
Alexander
Да, я пробовал по group_by, нормально работает, хочу этим тоже сделать.
Alexander
Для посмотреть, что удобнее
Timur
Судя по окончанию картинки, там объект внутри списка
Alexander
Ну да.
Timur
Да, я пробовал по group_by, нормально работает, хочу этим тоже сделать.
Очень странное желание пробовать неработающий вариант при наличии работающего
Alexander
group_by ограничен списком атрибутов
Alexander
Но тэги там есть, да.
Timur
Желание заставить работать groups. )
Что вы хотите сделать с groups - не очень понятно
Timur
Вы вообще знаете, для чего этот модуль?
Timur
Он никак не относится к инвентори
Alexander
Что вы хотите сделать с groups - не очень понятно
Хочу создавать группы хостов на основе наличия тэга. Есть в тэге 'adds' - пихать в группу 'adds'.
Alexander
Он никак не относится к инвентори
Это почему же? Это же инвентори плагин.
Timur
Это почему же? Это же инвентори плагин.
А, вы про netbox плагин! Прошу прощения, неверно понял
Timur
Тогда у вас просто неверно задано условие
Alexander
В доке сказано, что "Add hosts to group based on Jinja2 conditionals." Т.е. обчное 'in' не покатит?
Timur
Нужно нормальное jinja2 условие
Timur
По сути шаблон
Timur
А можно пример?
jinja2 if else вам пример нужен?
Timur
https://jinja.palletsprojects.com/en/master/templates/#if
George
Ссылку утащил к себе
Alexander
jinja2 if else вам пример нужен?
Нет, это я понимаю. Я не могу это сформулировать чтобы плагин скушал. Как я понимаю, ему нужно указать: groups: имя_группы: условие
Qwerty
Коллеги, подскажите, есть переменная iface_private, она определена у каждой группы, и может быть разной. Конфиг генерируется на стороне бекенда и в нем фигурирует следующая конструкция: db_servers_ips: "{{ hostvars | get_group_ips(groups['db_servers'], iface_private) }}" Если переменные iface_private одинаковые, то все без проблем, но если они разные то естественно, возникают проблемы, так как iface_private передается от бекенд-группы. Как сделать так, чтобы переменная в вышеуказанном запросе использовалась от группы db_servers?
Timur
Не нужно допускать таких пересечений, если не хотите подобных проблем
Timur
Тогда делайте разные названия для переменных разного уровня
Timur
Странно удивляться тому, что вы неправильно используете групповые переменные
Timur
Подскажите пример, пожалуйста
В смысле? Ну, сделайте отдельную переменную iface_private_dbservers и задайте ее только в группе db_servers
Timur
Обращаться к переменным другой группы с хостов не из этой группы можно примерно так: {{ hostvars[groups['db_servers'][0]]['iface_private_dbservers'] }}
Alexander
$ cat inventory/hosts.yml --- a: hosts: localhost b: hosts: localhost $ cat inventory/group_vars/a aaa: "a_var" $ cat inventory/group_vars/b aaa: "b_var" $ cat var_a.yml --- - hosts: a connection: local gather_facts: no tasks: - name: test debug: msg: "{{ aaa }}" $ cat var_b.yml --- - hosts: b connection: local gather_facts: no tasks: - name: test debug: msg: "{{ aaa }}"
Alexander
$ ansible-playbook -i inventory/ var_a.yml PLAY [a] ******************************************* TASK [test] ******************************************* ok: [localhost] => { "msg": "b_var" } PLAY RECAP ******************************************* localhost: ok=1 changed=0 unreachable=0 failed=0 $ ansible-playbook -i inventory/ var_b.yml PLAY [b] ******************************************* TASK [test] ******************************************* ok: [localhost] => { "msg": "b_var" } PLAY RECAP ******************************************* localhost: ok=1 changed=0 unreachable=0 failed=0
Alexander
???
Alexander
Если сделать так: $ cat inventory/hosts.yml --- a: hosts: localhost b: hosts: 127.0.0.1 То работает.
Alexander
Как это объяснить?
Alexander
На уровень хоста спускается при парсинге, наверное.
Alexander
И мержит все хосты, если IP/DNS совпадает
Alexander
Если засунуть в общую группу эти две группы - всё ломается :(
George
Эти факты ещё раз доказывают, что модель групп и переменных в ансибл недодумана
Timur
???
А что вас смущает? Вы пытаетесь два значения одной и той же переменной повесить на один хост
Timur
У одной переменной не может быть два значения
Timur
Все переменные в рамках хоста получают одно итоговое значение в соответствии с приоритетом
Alexander
Это замечательно. Плохо то, что это считается одним хостом.
Vladislav 👻
Никто не мешает сделать второй альяс хоста для того же хоста
Timur
Это замечательно. Плохо то, что это считается одним хостом.
Что именно плохо? То, что один и тот же хост localhost считается одним и тем же хостом?
Timur
Какой кошмар
Timur
Если хотеть странного - нужно быть готовым к неожиданным результатам
Отделение Bereke Bank
Ждун
Сколько сарказма
Ждун
У одной переменной не может быть два значения
Я бы сказал переменная для того и переменная чтобы ее значение изменялось )
Alexander
Какой кошмар
Кошмар - это реализация группировки в ansible.
Sergey
Кошмар - это реализация группировки в ansible.
Кошмар - это доки не читать и не заглядывать в исходники инструмента, в том числе которым ты зарабатываешь на хлеб/масло/<younameit>😉
Alexander
Ну аргумент "сам дурак" это мощно, да...
Sergey
Другая тема. Господа хорошие, я тут поколдовал над штатным инвентори-плагином, и получилась любопытная штука. Приделал поддержку групповых меток. Каждой группе хостов можно назначить некие метки, и группы с одинаковыми метками обрабатываются в итоге так, как будто вложены в одну группу, названную именем метки. Типа вот такого: https://pastebin.com/ZwQYH8K1
Sergey
Наоборот. При парсинге метки исчезают, остаются только обычные группы.
Timur
Ну аргумент "сам дурак" это мощно, да...
В документации ясно написано: - не мочить гремлинов водой - не кормить гремлинов после полуночи Если нарушить запрет - возможны непредсказуемые результаты! Приходит человек с жалобой на то, что он решил покормить гремлинов после полуночи, предварительно их намочив, и получается какая-то хрень. Что можно сказать про такого человека?
Anton
Oleksandr
Рефреш и все ок
Sergey
у меня вообще прилег сайтик...
На десктопе всё норм 😊
Anton
На десктопе всё норм 😊
у вас в рф зеркало локальное от ркн отдает просто)
Alexander
Человеку говорят - реализация глупая, а он - в доках написано так, значит это благодать. Что можно сказать про человека?
Sergey
Что не так?
Рассказываешь, почему Ansible-плохо.