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

контейнеров!!! ремарка 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 ответов

6 просмотров

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: [] и таски в роли тупо пропустятся, если для хоста/группы не задана конфигурация.

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

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

Всем привет, Добавил в плагин определение user agent public function registerMarkupTags() { return [ 'filters' => [ 'staticPage' => ['RainLab\Pages\Cl...
John Norton Kruger
3
Я колись ставив гуглу антиспам 3.0, може і норм, але мені не дуже зайшло. Теж думав тиждень, що його і куди. Зупинився на трех варіантах відразу всі три і включив 1. Перевір...
𝓔𝓾𝓰𝓮𝓷𝓮𝓥 J
2
Всем привет, может кто знает нормальных иностранных хостинг провайдеров. Что бы по качеству аналогичные netangels, beget, timeweb?
Black Cat
4
Добрый день , слышали про то что XML схемы https://schemas.xmlsoap.org/soap/envelope/ перестали работать со поза-вчера. А домен https://schemas.xmlsoap.org/ , отвечает 404 оши...
Max Dubovsky
3
Второй вопрос: снимаются ли эти ограничения при покупке на fragment хрени за кучу денег? (до 4096 / 2048)
Артем Уколов
3
Портфолио: Зовут меня Александр, мне 36 лет. Город Пушкино. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github....
Magic
10
где собака, админ группы? нычкуется и боится проявить волю, в толерантность еще не наигрался? @yelizariev
Ognezar
61
Портфолио: Зовут меня Александр, мне 41 год. Город Киров. Общий рабочий стаж: ~14 лет Уровень квалификации: Senior Full-stack developer Где прочесть мой код? https://github.co...
Magic
11
Приветствую всех, есть вопросик. Передали проект на OctoberCms, без инсталяшки в полуразвернутом виде, нужно было залить бекап бд, после залития бд, оказалось, что части строк...
Лео
14
Приветствую всех, возникла проблема, до этого писал бота в простом формате где при выполнении условий приходило через send_message информация, сейчас решил добавить хендлер на...
Andrew
4
Карта сайта