Timur
Достаточно одного таска с проверкой и инклудом нужных тасок в зависимости от результата
Artur
тоже верно
Николай 🌵
ок, как правильно написать проверку на наличие переменной ?
matt
when: foo is defined
Timur
Да, именно так
matt
https://docs.ansible.com/ansible/2.7/user_guide/playbooks_conditionals.html#the-when-statement
Николай 🌵
when: foo is defined
спасибо
Николай 🌵
то что я искал .. Всем спасибо
cyber
Привет всем, хочу сделать в set_fact динамическую переменную
cyber
С динамическим названием
cyber
Чтобы роль в конце выполнения устанавливала значение в переменную {{application}}.encrypt_pass
cyber
Как это правильно сделать ?
Vladislav 👻
В итоге rmq-prod1 будет иметь переменные из xz1 и rabbitmq.
теперь возник такой вопрос, а как мне и что запускать, чтобы это применить?
Vladislav 👻
получается, мне надо плейбук на xz делать?
Anton
получается, мне надо плейбук на xz делать?
Нет, на любой хост, хоть на все сразу.
Vladislav 👻
не взлетело
Vladislav 👻
не подтянулись переменные из группы
Anton
Хосты уже автоматически подтянут себе переменные из обоих варсов. Если не взлетело, значит где-то в именах каталогов или файлов ошибка.
Vladislav 👻
Vladislav 👻
Vladislav 👻
Vladislav 👻
с названиями все ок
Vladislav 👻
но в плейбуке хост одной группы, почему он должен подтянуть другую?
Anton
Он и не должен. Этот плейбук применится к хосту rmq-prod, я не вижу чтобы у него были где-то переменные заданы.
Anton
Так стоооп...)
Vladislav 👻
так а как быть, получается мне надо два плейбука делать?
Anton
Я понял загвоздку)
Vladislav 👻
один на сетап всего, а второй по частям?
cyber
Может ли роль возвращать данные ?
cyber
Типа return
Vladislav 👻
роль не возвращает, возвращает степ
Anton
один на сетап всего, а второй по частям?
Я думаю да. Сначала плейбук для настройки раббита, потом плейбук для его конфигурации твоими кредами. Ну и можно инклюднуть их последовательно тертим плейбуком, вообще всё по полочкам получится)
Vladislav 👻
блин, банальная вещь, а что-то такие сложности, аж ппц 🤔
Vladislav 👻
спасибо, буду думать
Vladislav 👻
правда почему-то в голове еще одна проблема возникла, но сформулировать пока не могу
cyber
роль не возвращает, возвращает степ
А посмотри выше , мне нужна роль которая бы в переменную с динамическим названием делала, не знаешь как такое сделать ?
Asten
так а как быть, получается мне надо два плейбука делать?
Несмог понять как airflow связан с rabbitmq. Это же 2 разные группы с 2 разными ролями и разными переменными. Разве нет?
Vladislav 👻
кажется я понял, получается, мне надо рулить группами сервисов, но когда надо объединять, то лучше всего это делать через отдельную группу, но с тегами, чтобы конфиги новые накатывались
Asten
celery
Самый простой и понятный способ это celery вынести в отдельную роль и катить на группу celery в которой перечислены нужные тебе хосты или группы
Asten
с celery все очень сложно в этом плане, он полностью в airflow вкорячен
Я к сожалению не могу угадать о чем ты и понять уровень вкоряченности) там же вроде pip install ...
Vladislav 👻
там еще много подводных камней, вплоть до отказа работать в virtualenv
Vladislav 👻
но как это решает мою проблему?
Asten
но как это решает мою проблему?
Давай ещё раз. Какая проблема?
Asten
Asten
Asten
На скринах группы твои
Asten
Что нужно сделать с ними?
Vladislav 👻
установить по логике групп airflow и rabbitmq и настроить по логике группы airflow-rabbitmq
Vladislav 👻
пока решение только в три плейбука, при этом третий обязательно через тэг
Vladislav 👻
но что-то попахивает костылем
Asten
"логика группы aitflow" это какие то тачки которые нужно выполнить и там и там?
Asten
Не тачки а таски т9
Vladislav 👻
там роль airflow, в которой инсталится и конфигурируется дефолтом, аналогично у rabbitmq
Asten
Прости не дописал( airflow-rabbitmq
Vladislav 👻
роль группы airflow-rabbitmq - это отдельный совокупный сервис
Vladislav 👻
Vladislav 👻
типа вот пример
Vladislav 👻
возможно я делаю что-то не так, но пока я не догнал, как сделать "так" и как этим рулить...
Asten
Я с телефона поэтому буду писать долго)
Asten
name: setup amqp hosts: rabbit role: rabbit tags: - rabbit - airflow-rabbit name: airflow hosts; airflow role: airflow tags: - airflow - airflow-rabbit name: some service hosts: airflow-rabbit role: airflow-rabbit tags: airflow-rabbit
Asten
С тегом airflow-rabbit выкатишь все сразу
Asten
Хочешь по отдельности кати с отдельным тегом
Asten
Надеюсь я тебя понял правильно
Vladislav 👻
Да, только роли airflow-rabbit нет, они разбросаны между двумя ролями airflow и rabbitmq
Vladislav 👻
Но на мысль натолкнул, большое спасибо, кажется я понял, как это сделать
Asten
Перенеси в новую роль и будет
Asten
Вообще нормально выносить в отдельные роли установку сервиса и конечную конфигурацию
Asten
У меня отдельно ставятся nginx, haproxy, elastic и так далее. А конфигурировать они более специфичными ролями
Vladislav 👻
Ага, я понял, огромное спасибо 👍🏻
Asten
Если подробно: установка к примеру nginx и его базовых конфигурации это одна роль. А вот конфиги апстримов это другая
Asten
Почему так: nginx ты можешь захотеть накатить на любую группу. А конфиги нужны на каких-то конкретных хостах. Этим можно оперировать
Vladislav 👻
Да да, логика именно такая
Vladislav 👻
Отлично, спасибо
Asten
сила с нами (с)