Alex
Один плейбук с разными плеями
а как быть со сложными HA окружениями. Например когда у нас идет настройка slave ноды, затем нужно выполнить один таск на мастере и вернуться снова на слейв и так раз 10-15. Размазывать вызов отдного таска в отдельный плей?
Alexander
Тут как раз про это речь )
Владимир
А есть какой нибудь каталог готовых плейбуков?
Sergey
Без вот этого вот, прости, дрочения вприсядку.
Владимир
Alexander
В плейбуке надо постоянно скакать либо с мастера на слейв, либо не скакать. В зависимости от того, запущен он на мастере или слейве
Sergey
В плейбуке надо постоянно скакать либо с мастера на слейв, либо не скакать. В зависимости от того, запущен он на мастере или слейве
В плейбуке какие-то операции будут для слейвов, какие-то - для мастеров. Это разные группы, соответственно, им можно выдать разные плеи.
Alexander
Сам плейбук может выполняться как на мастере, так и на слейве
Sergey
Сам плейбук должен выполнятсья на всех узлах, только есть такая конструкция - пересечение групп.
Sergey
А есть хороший пример такого плейбука?
В далёком-далёком корпоративном репозитории, за тридевятым периметром, на тридесятом хосте ......)))
Sergey
Вот же - https://docs.ansible.com/ansible/latest/user_guide/intro_patterns.html
Sergey
Например: - hosts: full_group:&masters tasks: - name: Master task ..... - hosts: full_group:&slave_tasks tasks: - name: Slave task
Alexander
Еще раз - все задачи могут выполняться как на мастере, так и на слейве
A
Докатился. Стою на светофоре, перед зелёным загорается " - - - ". Первая мысль: "yaml-светофор..."
Sergey
Еще раз - все задачи могут выполняться как на мастере, так и на слейве
Это высказывание противорчеит высказыванию про то, что некоторые таски должны делаться только на мастере.
Sergey
Определись уже.
Alexander
Т.е. если плейбук выполняется на мастере, он выполняется на мастере. Если он выполняется на слейве, часть задач должна выполняться на мастере
Alexander
Опыт работы с кубами есть? )
Sergey
Т.е. если плейбук выполняется на мастере, он выполняется на мастере. Если он выполняется на слейве, часть задач должна выполняться на мастере
Значит, в плейбуке только часть плеев может исполняться и там, и там. Есть некое подмножество плеев, которые должны исполняться только на мастере.
Sergey
Опыт использования булевой алгебры есть? )
Alexander
Да, при этом их либо нужно делегировать на мастер, либо никуда не нужно делегировать
Sergey
Да не нужно делегировать, просто эту часть нужно принудительно исполнять на мастере, вот и всё. Сразу отвалится делегирование.
Sergey
Часть - где попало, часть - на мастере.
Sergey
https://tproger.ru/explain/xyproblem/
Alexander
Я про это ничего не спрашивал. Я спрашивал про изменение синтакса в ансибле. С кубовыми нодами там все итак без проблем работает
Sergey
include имеет право работать как попало - оно было в 2.5 вроде объявлено устаревшим с вводом include_tasks + import_tasks
Alexander
Да, у меня везде используется include_tasks
Alexander
Только в двух местах, где нужно передавать переменные, был include, потому что раньше работало так
Alex
Например: - hosts: full_group:&masters tasks: - name: Master task ..... - hosts: full_group:&slave_tasks tasks: - name: Slave task
ну так то оно понятно ))) Но вот куча граблей с делегированием очень сильно заставляют пересмотреть подход и перейти таки на набор плеев
Alexander
Сейчас синтакс поменяли и с include_tasks тоже заработало, исправили косяк
Sergey
ну так то оно понятно ))) Но вот куча граблей с делегированием очень сильно заставляют пересмотреть подход и перейти таки на набор плеев
Я об этом и пишу, что не надо делать странное. Чем прозрачней и понятней твои скрипты, тем меньше времени и усилий ты тратишь на их поддержку.
Rad
https://www.redhat.com/en/services/training/do007-ansible-essentials-simplicity-automation-technical-overview тут Redhat выложил бесплатный курс по Ansible
Alexander
Например: - hosts: full_group:&masters tasks: - name: Master task ..... - hosts: full_group:&slave_tasks tasks: - name: Slave task
Так не пойдет. Таски нужно выполнять на одном конкретном хосте мастера
Андрей
Ну да, ну да))
Sergey
Так не пойдет. Таски нужно выполнять на одном конкретном хосте мастера
А в группу "masters" ты внезапно можешь включить один-единственный хост.
Sergey
Ну так, если что
Alexander
Этот конкретный хост может быть разным в разных случаях
Alexander
В зависимости от того, с каким кластером я работаю
Sergey
Угу. Разные кластеры - разные группы. Ты же не был на обсуждении объектной модели, да?
Alexander
Разные кластеры в разных группах, да. Мастеры этих разных кластеров в разных группах
Alexander
Зачем мне городить огород и создавать еще какую-то группу с одним мастером для каждого кластера, при том, что мне потом все равно ее придется динамически в плейбук пихать?
Отделение Bereke Bank
Alexander
Группы тоже разные
Sergey
1 кластер = 1 группа верхнего уровня. В неё вложены две другие - группа с мастером (может быть из одного хоста, кстати), и группа со слейвами. Группы верхнего уровня входят в all.
Отделение Bereke Bank
Группы тоже разные
В общем посмотри тут https://github.com/erzh1906/kubernetes-playbook
Alexander
Там итак есть группы верхнего уровня для кластеров. При этом есть мультимастер кластеры, и кластеры с одним мастером. И есть еще отдельная роль у нод, которая может быть назначена куда угодно
Alexander
Хоть на любой из этих мастеров, хоть на отдельно стоящий слейв
Alexander
И группами это уже решено
Timur
Любая группировка хостов по любому признаку решается группами
Timur
И группами это уже решено
Если группами решено, то никакая дополнительная логика определения наличия хоста в группе не нужна
Sergey
^^^ +++
Alexander
Логика должна определять, находимся мы на мастер ноде или на слейв ноде
Alexander
В общем, это бессмысленный флейм
Alexander
Не зная броду, не лезь в воду, как говорится. Люди просто не работали с достаточно сложными ha системами из разных кубовых кластеров, поэтому им непонятно
Alex
куча плеев
Alexander
Это нормально, в моем проекте в плейбуках верхнего уровня примерно также
manefesto
Возник у меня тут странный кейс Есть куча инстансов, все они в приватной сети, если кому интересно, то это scaleway Хочу назначить только на 1 хост public ip и через него сделать провижен всех нод. Я знаю можно на этот хост закинуть плейбук и оттуда сделать деплой, но меня интересует именно такой извращенный способ
Alexander
Мне не нужны там плеи, нужно отдельные действия в плейбуке делегейтить динамически
Alexander
Писать кучу плеев по одной таске это идиотизм, для этого есть delegate_to
manefesto
нашел кажись https://blog.scottlowe.org/2015/12/24/running-ansible-through-ssh-bastion-host/
manefesto
я думаю не в бастионе суть, а в proxy_command
Alex
так это и есть использование бастиона - промежучтоного сервера
manefesto
тьфу, я думал это какая то тулза
manefesto
=)
manefesto
Сорян
Prostotak
Привет, может, кто подскажет как создать сразу несколько папок в linux с помощью playbook?
Prostotak
типа /home/user/test1/test2/test3