Vladimir
Вот я хочу это делать с виртуалками
Vladimir
Я хочу что бы были динамические изменения в конфигах при смене в архитектуре что ли
Vladimir
вот тупой пример, добавил я nginx еще 1 , и хочу что бы в php-fpm кофиге его ip подбавился как allow автоматом
Vladimir
Но для этого нужно это где то хранить, эту информацию что бы можно было ее тягать
Vladimir
Может я просто не понимаю зачем придумали сервис дискавери
Vladimir
А хранить мне все надо в редис в ключ значение тягать и подставлять шаблонизатором
Sergey
на тупой пример тупой ответ - ты делаешь нормальный шаблон конфига, который добавляет в allow все ip хостов, перечисленных в группе backends 😉
Sergey
а как засунуть в группу backends все твои backend-хосты - это твой вопрос. хочешь - руками, хочешь - через дин. инвентори.
Nikolay
Привет всем. Я хочу иметь в роли возможность выполнение дополнительных действию по ключу. ну т.е. есть сейчас роль, которая описывает установку пакетов. Но хочу чтобы было два "роадмапа" что-ли. Стандартный (только с установкой) и расширенный (с применением кастомных настроек) Как эта фича называется (если она вообще есть)?
Vladimir
Ну вот и я об этом же
Vladimir
Я просто хочу понять я правильно понимаю назначение консула\сервис дискавери
Nikolay
tags
Спасибо большое, Сергей 👍. Пойду читать доки :)
Vladimir
А если when использовать ?
Vladimir
тут мне кажется стоит найти признаки смены твоего пути по твоей дорожной карте )
Sergey
Я просто хочу понять я правильно понимаю назначение консула\сервис дискавери
чтобы понимать правильно - вот годный рассказ из жизни http://habrahabr.ru/company/jugru/blog/264669/
Vladimir
А причем тут докер ?)
Vladimir
Если использовать докер то нет смысла в ansible
Vladimir
Там кибернетис все проблемы решит
Sergey
А причем тут докер ?)
Я всё же предлагаю тебе посмотреть видео - там консул и его друзья тоже есть
Sergey
И, кхм-кхм, хотелки с добавлением сервисов по информации из консула
Vladimir
Понял, спасибо, но просто в докер не хочу лезть , там микросервисы а у нас монолит
Nklya
Ну из этого видео песочек уже сыпется
Vladimir
15 год кстати да
Sergey
Коллеги, нужен совет. Задачка такая: зная ip, получить имя интерфейса, на котором он находится. Знаю три способа: два некрасивых и один правильный, и вот как раз правильный(вытащить данные из hostvars) не получается - я не сильно программист, но на чистом питоне осилил бы эту структуру данных, а вот на jinja не получается. Может сталкивался кто с похожей задачей, направьте в нужную сторону.
Sergey
15 год кстати да
Раз ты в 17 задаёшь вопросы по консулу и ансиблу и сервис дискавери - значит, актуально, не?...
Vladimir
Ну не факт что я просто не знаю правильный путь)
Sergey
Ну не факт что я просто не знаю правильный путь)
и упрямо отбиваешься от попыток на него навести 😉
Vladimir
https://stackoverflow.com/questions/37718217/what-are-some-concrete-use-cases-for-consuls-key-value-store
Vladimir
Кстати вот вроде про это
Vladimir
We've been tinkering with Consul as a key-value store for a while but I think the most interesting use comes with Consul Template and using that to update configuration on the fly.
Vladimir
Пойду гляну видео )
Sergey
Тебе сюда - http://docs.ansible.com/ansible/latest/playbooks_filters.html#extracting-values-from-containers
я там конечно же был, но видимо что-то упустил. Спасибо, посмотрю внимательнее.
Sergey
я там конечно же был, но видимо что-то упустил. Спасибо, посмотрю внимательнее.
смотри....... у тебя есть список интерфейсов: "ansible_interfaces": [ "lo", "eth0" ],
Sergey
есть такой
Sergey
и структура вида "ansible_lo": { "active": true, "device": "lo", .... }, "ipv4": { "address": "127.0.0.1", .... }
Sergey
далее - ты с помощью предыдущего списка, по его элементам создаёшь новый ключ: <% set dictname = "ansible_" ~ item %>
Sergey
а потом работаешь как с обычным словарём: hostvars[dictname]['ipv4']['address']
Sergey
jinja позволяет внутри угловых скобок создавать новые переменные, работать с условиями, циклами и т.д.
Sergey
спасибо!
Dmitry
- hosts: {{ item }} remote_user: core gather_facts: "False" with_items: "{{ groups }}"
Dmitry
так можно?
Sergey
так можно?
если ты знаешь, зачем - то можно 😊 в общем-то, даже если не знаешь - тоже можно, кто тебе запретит-то? а по сути - это такой типо динамический инвентори?
Dmitry
может это можно сделать както изящнее
Dmitry
я весь внимание
Sergey
я бы собрал все группы в одну над-группу и кинул таску ей
Sergey
😊
Sergey
а ансибл по общему правилу загрузит group_vars каждой группы
Dmitry
у меня есть инвентори вида [group1] host1 host2 [group1:vars] myvar=val1 [group2] host1 host2 [group2:vars] myvar=val2
Dmitry
и вот таска которая должна выполниться для каждой группы но с соответсвующей варс
Dmitry
я могу канеш сделать host: group1 ... host: group2 ...
Sergey
[big-group:children] group1 group2
Dmitry
но это как оп убански
Alf 🙀
hosts: all
Sergey
и назначь таски этой big-group
Alf 🙀
если конечно у тебя инвентори на этом заканчивается
Dmitry
и назначь таски этой big-group
и больше делать не надо ничего? он сам определит?
Sergey
вот предметно - http://docs.ansible.com/ansible/latest/intro_inventory.html#groups-of-groups-and-group-variables в целом - да. только я бы ещё из inventory вынес переменные (свежие версии уже поругиваются на наличие там переменных)
Dmitry
просто плейбук
Sergey
у меня там не полноценная роль
ну а какая разница? сам, думаю, знаешь: нормально делай - нормально будет.
Nklya
Да, переменные в инвентори это шикарное решение
Vladimir
А почему бы тебе не указать when var def ?
Vladimir
И так разделить
Vladimir
И где надо добавляешь переменную
Pavel
К вопросу о консул-темплейте, проконсультируйте плиз: Вот я хочу бекенды обновлять, ну классика: удалить из балансера бэкенд, релоунднуть, пойти на хост, сделать дела, вернуть хост, следующий и т.д. Если конф балансера из консул темплейта делается, я запускаю сценарий, он мне удаляет ключ. Как из сценария понять, что конф балансера перегружен, чтобы начать работу с сервером?
Pavel
Ну, т.е. между записью ключа и релоадом конфа есть N секунд, которые надо бы подождать
Pavel
ну там есть всякие wait for
Pavel
На балансере есть режим мэйнт, если мы говорим про хапрокси, если вам сервис передеплоить надо
не я спрашиваю о том, как из ансибла определить, что консул темплейт отработал... Грубо говоря такой плейбук: - запиши в консул - дождись пока отработает темплейт <-----???? - продолжи работу
Alf 🙀
Получить список бэкендов с лб и сравнить с желаемым?
Pavel
эммм, ну, я пока придумал только такое: wait_for: search_regex: "#{{ backend_ip }}"
Pavel
ну или хз
Alf 🙀
опять же если мы говорим про хапрокси то можно получить список серверов с бэкенда с их статусом через сокет, например
Pavel
ну я про nginx