Alexander
Так, давай ещё раз. elk.elasticsearch.c1: es1, es2, es3 elk.kibana.c1: kb1 hosts: elasticsearch - показывает все 4. *!№!*№!"*№*!!!!! Откуда kibana? Оно берёт и клеит elk.elasticsearch.c1 с elk.kibana.c1 ???
Alexander
В результате получается elk.elasticsearch.c1: es1, es2, es3, kb1 elk.kibana.c1: es1, es2, es3, kb1
Alexander
elk: children: elasticsearch: children: cluster1: hosts: c1h1 c1h2 might_net: children: cluster1: slow_net: children: cluster2:
И здесь у тебя (в двух группах cluster1) получится такой же салат, как и тот, который мы обсуждаем. Ни о каком разделении речь не идёт.
inqfen
как бы вполне себе специально функционал из коробки
inqfen
https://docs.ansible.com/ansible/latest/user_guide/intro_inventory.html рекомендую в общем сходить сюда
Alexander
Ну это не эмуляция словаря, а чёрт знает что. "Мы просто соберём это в кучу"
inqfen
и вопросы отпадут
inqfen
Ну это не эмуляция словаря, а чёрт знает что. "Мы просто соберём это в кучу"
а кто тебе сказал, что это эмуляция словаря? это просто в ямле описание
Alexander
Я думал, что это эмуляция словаря. Ведь это было бы логично.
inqfen
а вот после описание включается ансибл и группирует их как ты описал
inqfen
ты можешь одну группу еще в 5 засунуть
inqfen
а те 5 еще в 3
Alexander
Область видимости - вот что меня здесь смущает, а не возможность ссылаться на группы.
inqfen
группа - это понятие инвентаря, а не ссылочное нечто
inqfen
область видимости как я еще раз написал - снизу вверх
inqfen
ну и ссылку скинул, там все подробно по группам есть
inqfen
не надо сравнивать напрямую с питонами го и подобным, ансибл не язык погромирования таки
inqfen
(хотя формально можно под это и подогнать)
Alexander
Просто я не ожидал такого.
Alexander
Думал, как раз с питоном и можно сравнивать, однако вот жеж как...
Отделение Bereke Bank
Я нифига не понял, но я рад что у меня на каждый кластер куба свой инвентори 😂
inqfen
Просто я не ожидал такого.
это - конфигурация и он отталкивается от конфигурироемой сущности, то есть хоста
Alexander
Так. Сделал так: elk: children: cluster1: children: elasticsearch: c1es1 c1es2 c1es3 kibana: c1kb1 children: cluster2: children: elasticsearch: c2es1 c2es2 c2es3 kibana: c2kb1
Alexander
Что получу на hosts: elasticsearch ?
Отделение Bereke Bank
Сделай ansible —list-hosts elasticsearch
Alexander
Ну я уже сделал, вопрос - что я ДОЛЖЕН получить?
Alexander
elasticsearch же должны слиться, так?
Отделение Bereke Bank
Вот мне интересно теперь))
Alexander
@inqfen
Alexander
Что ты думаешь?
inqfen
емнип, ты в результате только одну группу получишь, ты же ее переопределил
Alexander
Есть такой static inventory: elk: children: elasticsearch: children: cluster1: hosts: c1h1 c1h2 ... cluster2: hosts: c2h1 c2h2 ... kibana: children: cluster1: ... cluster2: ...
Стоять! Почему здесь группы cluster1 и cluster2 не должны переопределяться? )
inqfen
так сказать cluster1.elasticsearch и ckuster2.elasticsearch - это один и тот же объект
Alexander
Воу-воу!
inqfen
потому что это groups.elsaticsearch
Отделение Bereke Bank
Alexander
В кои-то веки согласен со стикером =)
inqfen
В общем, ты сделал группу elasticsearch
Отделение Bereke Bank
Ну я уже сделал, вопрос - что я ДОЛЖЕН получить?
А —list-hosts что показывает то в итоге? То что нужно или как inqfen говорит?
inqfen
И это не дочерняя группа cluster_n
inqfen
Это просто отдельная группа, которая входит в другие
Alexander
А —list-hosts что показывает то в итоге? То что нужно или как inqfen говорит?
Ни то, ни то ) Показывает [WARNING]: While constructing a mapping from hosts.yml, line 436, column 7, found a duplicate dict key (children). Using last defined value only. и ТОЛЬКО cluster1 elasticsearch без cluster2 elasticsearch
Alexander
И это не дочерняя группа cluster_n
Да пёс с ними с дочерними! Почему в одном случае группа собирается, а в другом - нет.
Отделение Bereke Bank
Посмотри внимательнее
Alexander
Ща гляну, я вручную переписывал
inqfen
Остальные в него вкладываются
Alexander
Может там то и нет
Alexander
В общем так - там не было лишнего children'а. Он был около второй кибаны. В результате, структуру всю отбросило, судя по всему.
Alexander
Фух, теперь выдаёт.
Alexander
Спасибо.
inqfen
Children 1 раз надо писать
inqfen
Остальные в него вкладываются
Alexander
Да я говорю же тебе - не было его там - это я когда сюда писал - неверно переписал.
inqfen
children: group1: group2:
Alexander
children: group1: group2:
Ну у меня так и было.
Alexander
Но внутри второй группы там было лишний раз написано children
inqfen
Я с телефона, так что я с лагом пишу
inqfen
А отступы конечно вообще в говно превращаются
Alexander
Я ещё думал - первым способом сделать или вторым. Сделал бы вторым - так и не узнал, какие чудеса в ansible происходят...
inqfen
не, чудеса это когда оно внезапно получается, а там все в доках описано
inqfen
скидывал же
Alexander
Я это читал ещё до того. Но этого не увидел. Не вчитывался, конечно, но не ожидал (просто НЕ ОЖИДАЛ), что словарь выкинут и сделают вот так.
inqfen
это не совсем словарь, это структура ямла
Alexander
Если переменные такой структурой назначать - будет словарь. Вот в чём дело.
Alexander
Я не спорю, в общем-то.
Alexander
А как вывести переменную, которая для хоста имеет приоритет в данный момент? То есть ту, которая будет использоваться.
inqfen
https://docs.ansible.com/ansible/latest/user_guide/playbooks_variables.html а это тут, вообще все можно через hostvars получить
George
Блин. Читаю. И ужасаюсь. Будто группы в ансибле сделаны через одно место. @amarao чего думаешь ?
inqfen
Блин. Читаю. И ужасаюсь. Будто группы в ансибле сделаны через одно место. @amarao чего думаешь ?
группы в ансибле сделаны так, как предпологает его логика, чтош
inqfen
пилинг дальше и сложнее - это в salt
Alexander
Там доки отвратные
George
У ансибла местами не лучше
George
Зато как будто у солта код лучше 😂
inqfen
оно зато работает очень быстро