John
сервер промы - это сервер куда должен быть установлен прометеус. По умолчанию параметры передаются из переменных: тут пример: https://github.com/cloudalchemy/ansible-prometheus
John
соответственно вот эти таски:
сейчас эти таски прописаны в роли system
Timur
Еще раз. Что конкретно у вас не работает с точки зрения ансибла? Нюансы настройки прометеуса тут оффтоп
John
с точки зрения ансибла не заполняются переменные, кототрые должны выть так:
Timur
Где они не заполняются?
Timur
В каком файле?
John
а заполнять я их пытаюсь так:
Timur
Билять
John
заполняться они должны именно в переменных, перед установкой прометеуса
John
что бы при установке прометеуса он к ним обратился и получил данные
Timur
Еще раз: как устанавливается прометеус у вас? Дайте полную картину. Плейбука, роль, инвентори, результат
Timur
Почему из вас все клещами нужно тянуть?
John
(наверно потому что я тупой как минимум в части ансибла)) сорян)
Timur
Что мешает-то?
John
прометеус устанавливается из роли: https://github.com/cloudalchemy/ansible-prometheus Плейбук выглядит так:
John
инвентори:
Timur
Вы издеваетесь?
Timur
Выкладывайте нормальные исходники на https://pastebin.com/
Timur
И давайте ссылку
Timur
Ваши обрезки скриншотов собирать в паззл - сомнительное удовольствие
John
результат https://pastebin.com/JUit3bTf
John
понял, сейчас на пастебине соберу
Отделение Bereke Bank
В Казахстане пастебин заблокирован 😞
John
https://pastebin.com/JUit3bTf вроде все собрал, и даже результат))
Vladimir
В Казахстане пастебин заблокирован 😞
В россии телеграмм заблокирован...
simplemice.eth
https://telegra.ph/Tut-tak-prinyato-11-04
simplemice.eth
если кто забыл, напоминаю
John
чего то еще не хватает?
Timur
Роль прометея у вас ставится вот так: - name: Install Prometheus hosts: monitoring roles: - cloudalchemy.prometheus На группу monitoring. В параметрах плея нет никаких дополнительных параметров, включая таргеты. В инвентори для группы monitoring - тоже пусто. И чего вы хотите в таком случае?
Timur
У вас роль ставится без каких-либо параметров
Timur
Откуда роль должна о ваших таргетах узнать?
John
из роли систем? - name: Set list of inventory group set_fact: targets: "{{ groups['all'] | map('extract', hostvars, ['ansible_ssh_host']) | list }}"
Timur
из роли систем? - name: Set list of inventory group set_fact: targets: "{{ groups['all'] | map('extract', hostvars, ['ansible_ssh_host']) | list }}"
Откуда она узнает про эту переменную (при том, что даже если узнает - ей все равно другой параметр нужен), если эта переменная задается у вас в другом плее?
Timur
Вы думаете, ансибл результаты и факты каждого плея в ноосфере сохраняет?
Egor
Ребят, привет. Вопрос: кто-нибудь настраивал для AWX изолированную ноду?
John
то есть переменные каждой роли не влияют на другие роли? я правильно понимаю?
Timur
то есть переменные каждой роли не влияют на другие роли? я правильно понимаю?
Переменные живут в рамках одного плея. Какие роли их выставляют - неважно
Timur
У вас плеи разные
John
почему разные? плейбук то один вроде? я уже вообще потерялся в ваших словах
Timur
Вы просто, грубо говоря, прогнали один набор скриптов, которые задают какие-то переменные. Потом все это забыли и прогнали другой набор скриптов. И думаете, что при втором прогоне скрипты почему-то должны узнать, что было у вас при первом
Timur
Ну, и в любом случае на втором плее нужный параметр у вас никак не задается
Timur
Вам нужно заполнить словарь prometheus_targets
John
ах вот оно что.. то есть вынести "Set list of inventory group" в отдельную роль, и "играть" эту роль во втором плее - тогда я только получу желаемый результат?
Timur
Можно одним пре-таском обойтись
Timur
И нужно задавать правильный параметр. У вас он не задается, где бы вы этот таск не вызывали
John
в плей где ставится прометеус поставить еще и пре-таск, который соберет факты - тут я понял.
Timur
Вам нужен словарь вот такого вида: prometheus_targets: node: - targets: - localhost:9100 - demo.cloudalchemy.org:9100 labels: env: demosite
John
именно
Timur
У вас он нигде не задан
John
а заполнять я их пытаюсь так:
так я думал что задаю его этой конструкцией
Timur
Там задается обычная переменная targets
Timur
К словарю prometheus_targets она никакого отношения не имеет
John
так как же мне собрать и задать словарь prometheus_targets?
Timur
так как же мне собрать и задать словарь prometheus_targets?
Вот так попробуйте: --- - name: Install Prometheus hosts: monitoring roles: - cloudalchemy.prometheus - cloudalchemy.grafana vars: prometheus_targets: node: - targets: >- {{ groups['all'] | selectattr('ansible_ssh_host','defined') | map('extract', hostvars, ['ansible_ssh_host']) | list }}
John
Спасибо, пробую. Вы это из головы сгенерировали? Как бы и мне научится так? Как надо мыслить и что прочитать что бы приблизиться к этому?))
Timur
Ну, и RTFM не мешает
Alexander
Сейчас, момент
Я так понимаю, мне не ждать уже? )
Timur
Действительно, странное поведение фильтров
Alexander
Ну ладно )
Timur
Надо потестить еще
John
Вот так попробуйте: --- - name: Install Prometheus hosts: monitoring roles: - cloudalchemy.prometheus - cloudalchemy.grafana vars: prometheus_targets: node: - targets: >- {{ groups['all'] | selectattr('ansible_ssh_host','defined') | map('extract', hostvars, ['ansible_ssh_host']) | list }}
TASK [cloudalchemy.prometheus : configure prometheus static targets] ************************************************************************************************************* changed: [test-bnb0] => (item={'value': [{u'targets': []}], 'key': u'node'}) что то произошло)
John
счас на пасте соберу весь выхлоп
Timur
Поправить немного вызов нужно
Timur
В параметре сделайте так: prometheus_targets: node: - targets: >- {{ groups['all'] | map('extract', hostvars, ['ansible_ssh_host']) | select('defined') | list }}
Timur
У меня работает
John
ну значит и у меня когда нибудь заработает) Поправил, запустил. Ждем результат) может поясните не много, как до этой конструкции дойти? где про такое почитать, что бы понять что тут происходит и научится самому?
John
уже чувствую что все будет ок: TASK [cloudalchemy.prometheus : configure prometheus static targets] changed: [test-bnb0] => (item={'value': [{u'targets': [u'10.0.3.89', u'10.0.3.78', u'10.0.3.85', u'10.0.3.177']}], 'key': u'node'})
Timur
Тут ничего особенного
John
порты только не прописаны)
Timur
Вам нужно в параметре задать значение словаря
Timur
В словаре prometheus_targets есть свойство targets, содержащее список нужных вам адресов
John
Тут ничего особенного
для кого-то ничего особенного, для неопытного какой-то космически недостижимый феншуй