Size: a a a

2021 March 12

AD

Alex Domoradov in Ansible
Maxim
просто я не знаю как иначе. Задача нетревиальная.
Есть 3 сервака. На них нужно запускать сервис. Сервис запускается только если запущен zookeeper на определенной ноде.

в итоге задача такая:
идет на первый попавшийся из трех сервак.
читаем конфиг файла сервиса и ищим там строчку, где прописан адрес и порт зукипера. (Зукипер может стоять  на одном из трех хостов)
Далее идем на этот хост, поднимаем его и только после этого на всех трех серваках стартуем сервис.
а что мешает вначале стартануть Зукипер, а потом уже сервисы ?
источник

M

Maxim in Ansible
Lamobot
А зачем проверять?
Сделайте плейбук который запускает зукипер, а потом сервисы поднимает
я описал в кратце. Там все сложнее. Вместо локального нашего  зукипера может быть кластерный на всех трех нодах. Его не мы обслуживаем.
И вот скрипт должен смотреть - на или не наш зукипер . Если не на - то проерять телнетом - работает или нет. Если работает запускает сервисы. Еслли нет - падает с алертом.

Если же зукипер наш  - смотрим,если запущен, то ок, если нет - лезем на тот единсвтенный хост где он есть  и запускаем
источник

AD

Alex Domoradov in Ansible
условно

hosts: zookeeper
roles:
 - { role: zookeeper }

hosts: services
roles:
 - { role: my_service }
источник

M

Maxim in Ansible
Alex Domoradov
а что мешает вначале стартануть Зукипер, а потом уже сервисы ?
изначально мы не знаем на каком из трех серверов стоит зукипер. Скрипт должен вычитать  это из конфига.
источник

M

Maxim in Ansible
Alex Domoradov
условно

hosts: zookeeper
roles:
 - { role: zookeeper }

hosts: services
roles:
 - { role: my_service }
зукипер и сервисы на одном хосет
источник

s

shadow in Ansible
Maxim
просто я не знаю как иначе. Задача нетревиальная.
Есть 3 сервака. На них нужно запускать сервис. Сервис запускается только если запущен zookeeper на определенной ноде.

в итоге задача такая:
идет на первый попавшийся из трех сервак.
читаем конфиг файла сервиса и ищим там строчку, где прописан адрес и порт зукипера. (Зукипер может стоять  на одном из трех хостов)
Далее идем на этот хост, поднимаем его и только после этого на всех трех серваках стартуем сервис.
если совсем грубо, то послать на веселые три буквы из-за использования zookeeper. discovery у него #ня
источник

M

Maxim in Ansible
shadow
если совсем грубо, то послать на веселые три буквы из-за использования zookeeper. discovery у него #ня
что?
источник

s

shadow in Ansible
Maxim
что?
ну, не самый лучший тех. стек
источник

M

Maxim in Ansible
shadow
ну, не самый лучший тех. стек
согласен) Но щито поделать. Я человек маленький.
источник

s

shadow in Ansible
Maxim
согласен) Но щито поделать. Я человек маленький.
источник

M

Maxim in Ansible
точно подмечено)
источник

s

shadow in Ansible
тогда как-то так
источник

E

Elenhil in Ansible
Maxim
изначально мы не знаем на каком из трех серверов стоит зукипер. Скрипт должен вычитать  это из конфига.
Такие вещи по хорошему должны лежать в инвентори
источник

E

Elenhil in Ansible
Хосты с зукипером - быть в соответствующей группе
источник

s

shadow in Ansible
неа, там же discovery и вся радость
источник

E

Elenhil in Ansible
Насчёт ветвления селфхост вс менеджед - сильно проще просто сделать 2 плейбука
источник

M

Maxim in Ansible
Elenhil
Такие вещи по хорошему должны лежать в инвентори
стендэлон зукипер - это временное явление. Но сколько продлиться - хз.
источник

M

Maxim in Ansible
Elenhil
Насчёт ветвления селфхост вс менеджед - сильно проще просто сделать 2 плейбука
а как вторйо  плейбук узнает,что первый отработал или не отработал?
источник

E

Elenhil in Ansible
Maxim
стендэлон зукипер - это временное явление. Но сколько продлиться - хз.
Ну вот сделайте инвентори в соответствии с реальностью.
Те хосты на которых должен быть сераис с зк - лежат в группе зк
источник

E

Elenhil in Ansible
Maxim
а как вторйо  плейбук узнает,что первый отработал или не отработал?
Никак. Сразу второй
источник