Я смиренно пришёл за советами !!! ремарка, роль для развёртывания

контейнеров!!! ремарка 2, да энсибл отнюдь не CD тульза(говорил и не раз, но задача есть, надо делать)

1. в ролях могут быть переменные которые должны быть явно указаны? (defaults для универсальных ролей опасная штука и не могу объяснить, но мне вызывает диссонанс defaults-> main.yml)
2. когда можно использовать when в ролях? я в данный момент указал его для таких моментов как - если переменная задана (when: role_prio_containers is defined and is_switchover is not defined)
3. насколько правильно указывать в переменных ansible_python_interpreter ?

вот сами примеры по каждому вопросу -
1. ну тут и без примера ясно, что у меня переменные которые явно должны быть обозначены в инвентори
просто спор с тимой, что дословно - роль независимая единица и типа везде всегда при запуске заработает без указание в инвентори (или еще где) переменных.
я тут немного не понимаю и примеры не помогают, мож реально не париться и везде в defaults запихать переменные на пофиг, особенно где docker_image = на какой нибудь безобидный докер образ

2. = = =
а) у нас есть прод кластер и мы его переключаем через переменную в инвентори is_standby = true|false (при свитоверах всегда его ручками задаём где хотим поднять активное плечо)
и вот в тестовых средах где у меня только по одному плечу, данной переменной нет
я задаю эту переменную прям в group_vars этой тестовой среды
is_switchover = false, так как в ролях прописал что запускаем контейнер только на активном плече

б) + ввёл новую переменную
when: is_switchover
(отдельный плейбук switchover.yml, который так же запускает эту роль, но с заданной переменной is_switchover), это для случаев когда во время свитчовера хочу тушить на активном плече и поднимать на стэндбай плече. нутром чувствую что это можно следать изящнее, но при свитчоверах мне надо именно перед запуском контейнера чистить сессионые и композитные кэшы

3. указываю прям в group_vars и/или в плэйбуках
ansible_python_interpreter: /usr/bin/python36

8 ответов

22 просмотра

1. Не понятен вопрос, все переменные используемые во время выполнения плейбука обязательны, если не указано к примеру "{{ used_var | defaults(44) }}". Роль самостоятельная единица, defaults на то и созданы чтобы без указания переменных роль все равно работала на настройках по умолчанию. Если docker_image используется в цикле, можно указать docker_image = [], он пропустит эту таску без ошибок. 2. Когда нужна какая-либо проверка. Подробнее: https://docs.ansible.com/ansible/latest/user_guide/playbooks_conditionals.html 3. Хотите указывайте чтобы он использовал определенную версию питона которая у вас установленна, не хотите не ставьте, найдет автоматически.

azadevlab- Автор вопроса
antikuz Kuzmin
1. Не понятен вопрос, все переменные используемые ...

норм, спасибки но говорю же, противен сам defaults, не знаю почему вдруг стало триггерить от него, как будто правильнее что б упал плейбук и что б заглянули в README, а не запускали впустую (типа псевдо защита) и да, где можно, сразу указал в тасках "{{ var | d('5432') }}"

azadevlab
норм, спасибки но говорю же, противен сам defaul...

Кстати, валидный аргумент. Хочешь запустить роль - сделай кастомы

azadevlab- Автор вопроса
George Gaál
Кстати, валидный аргумент. Хочешь запустить роль -...

да, но сам ты конечно так делать не будешь 😅😂

Не хочешь when поменять на группы? Или не получится? Я так понял, ты какое-то кластерное решение разворачиваешь. Постгрес какой-то. Или бекенды балансишь. Почему не разбить на группы active: host11, host12, host13 passive: host21, host22, host23

azadevlab- Автор вопроса
George Gaál
Не хочешь when поменять на группы? Или не получитс...

переключение хадуп кластера ну и есть самописанные сервисы, которые запускаем в докере именно при свитчоверах надо чистить сессионные и композитные кэши, иначе он поднимет с дисков старые, ну и будет не очень хорошо

azadevlab
переключение хадуп кластера ну и есть самописанные...

Здесь спору нет. Просто похоже, что если нужно выполнять какие-то действия по условию - без when не обойтись. С другой стороны - а зачем тут ансибл вообще? Можно было пайтон скрипт или сервис намонстрячить, который делает перезапуск сервисов или их отключение, с проверкой ошибок. А из ансибла его просто пинать. По аналогии с патрони. Ты же не будешь патрони на ансамбль переписывать? Правда?

azadevlab
норм, спасибки но говорю же, противен сам defaul...

У нас в дефолтах роли всегда some_role: [] и таски в роли тупо пропустятся, если для хоста/группы не задана конфигурация.

Похожие вопросы

Обсуждают сегодня

Добрый вечер, Пока не совсем понимаю как наладить общение между телеграм ботом и ПО для работы с сим боксом. По самому боту так понял: - Нужен некий баланс, который можно поп...
Magic
6
сделал сайт, прикрутил в боте сайт, и виджет логина. как автоматически логинить пользователя в аккаунт(телеграм), при входе с бота?
Александра Чернивецкая
5
Объясните, пожалуйста, почему компилятор ругается на использование в условии неинициализированной переменной: int x; Task.Run(async () => { x = await somefunc(); }).Wait...
Александр
5
Ребят, подскажите, пожалуйста, почему в префиксе к ассетам, которые генерируются через фильтр | theme в шаблоне, стал вдруг появляться index.php? Вот так выглядит ссылка на а...
Виталий
1
Всем привет. Ребята, подскажите, пожалуйста. у ботов есть ограничение на отправку сообщений - 30 сообщений в секунду, эти ограничения накладываются на все сообщения? или на со...
Artem Stormageddon
4
Блин, ребята, сори за тупые вопросы. А можно ли как-то открыть вебапку по нажатию на кнопку в меню(которое появляется слева, команды)?
Artem Stormageddon
3
а плаксы из-под питона умеют только в комфортных условиях что-то выдавить из себя?)
Lencore
9
Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
Коллеги, может знает кто, можно ли цвет бейджа счётчика в BackendMenu менять без бубнов?
Alex Blaze
3
Карта сайта