Timur
Совершенно непонятно, зачем нужны роли, если вы их используете исключительно как плейбуки
Timur
Только инструментов управления в плейбуках больше
Max
хороший разговор. приятно. 🙏
Max
👍
Αλέχ
Мне кажется, что у нас различие в понимании как используются роли и плейбуки 🙂 Роли содержат переменные, таски и хендлеры для конкретной задачи, например установить и настроить софт А плейбук - это набор (список) ролей для применения на каком то опрделенном хосте или группе хостов
Timur
А если вы пытаетесь пихать в роли логику плейбук, наплевав на переносимость, то возникает логичный вопрос - зачем вам вообще роли?
Αλέχ
А если вы пытаетесь пихать в роли логику плейбук, наплевав на переносимость, то возникает логичный вопрос - зачем вам вообще роли?
Ой, сложно. Давайте проще: вот шаблоны https://github.com/ansible/ansible-examples. Структура этих шаблонов точно такая же, как я и рассказываю - п лейбук содержит список ролей для применения на хостах. Что в них в них не так?
Timur
И не запихивают в роли логику плейбук, имитируя разные плеи
Αλέχ
Я не понимаю сути вопроса. У них все так. Они используют роли как роли, а плейбуки как плейбуки
Скорее всего потому, что читаете между строк. Например, вопрос о переносимости звучит уже раз в 3й, но я писал, в каком случае нет необходимости в переносимости 🙂
Timur
Если нет необходимости в переносимости - нет необходимости и в ролях
Αλέχ
Я вас не понимаю, а объсянять вы не хотите ¯\_(ツ)_/¯ Может есть хороший пример, тогда? Гитхаб, гитлаб, битбакет… Хоть что нибудь
Timur
Я вас не понимаю, а объсянять вы не хотите ¯\_(ツ)_/¯ Может есть хороший пример, тогда? Гитхаб, гитлаб, битбакет… Хоть что нибудь
Что именно вам непонятно? Я, вроде, несколько раз объяснил, что логику привязки к хостам в роли запихивать не нужно, потому что это ломает переносимость, что противоречит основной сути ролей
Timur
И что если не нужна переносимость - то можно легко обойтись плейбуками, без говнокода в ролях
Timur
Это как раз вы никак не желаете ответить на вопрос - зачем вам вообще роли, если вас не волнует переносимость кода между окружениями?
Αλέχ
Роли - для для специфичных переменных и тасков для установки софта Плейбуки - для менеджмента набора применяемых ролей Технически оно, конечно, да. Можно запихать все в плейбуки. Но какой в этом смысл, когда иметь “сервис=роль” логичнее в плане набора дефолтных переменных и отдельных хендлеров? Все можно запихать в один плейбук, я не спорю об этом. Но этого делать не нужно. Переносимость - куда, если бизнес задача стоит сделать привязку к архитектуре?
Timur
Дефолтный набор переменных и хендлеры, кстати, прекрасно работают и в плейбуках. Никакие роли для этого не нужны
Timur
Так для чего вам роли в таком случае?
Aleksey
Куда-куда.... Между хостами. Роль не должна ничего знать про хосты. Обычно это вылазит либо с башсиблом, либо с рукожопием.
А если я управляю перемещением данных между серверами? Например - нужно снять бекап с MySQL при помощи innobackupex, переписать на соседний сервер, выполнить операции подготовки, запустить MySQL... Какой в таком случае true way?
Aleksey
Я-бы не спрашивал про это если-б сам не сталкивался с подобного рода задачами. Решал, как понимаете, неправильно, через "прибивание" хоста к роли... А "как сделать правильно" не понял и решения для себя не нашёл
Aleksey
Я-бы не спрашивал про это если-б сам не сталкивался с подобного рода задачами. Решал, как понимаете, неправильно, через "прибивание" хоста к роли... А "как сделать правильно" не понял и решения для себя не нашёл
может так, для примера, в роль: --- - name: Mocking activity file: path=/success state=touch owner=root group=root mode=644 delegate_to: '{{delegate}}' в play: --- - hosts: normal_host become: yes roles: - role1 vars: delegate: monitoring_host
Отделение Bereke Bank
господи вы до сих пор спорите про странности😂
Sergey
А если я управляю перемещением данных между серверами? Например - нужно снять бекап с MySQL при помощи innobackupex, переписать на соседний сервер, выполнить операции подготовки, запустить MySQL... Какой в таком случае true way?
Упускаешь главное: Ansible = stateless. Отсюда в твоём случае использование будет чуть другим: одна и та же роль должна уметь снять бэкап, положить его во внешнее хранилище, скачать бэкап из внешнего хранилища на хост, и накатить базу из бэкапа. А уже с какими хостами и группами запускать - дело номер последнее. Иначе - говнокод, башсибл, вот это вот всё.
Timur
Это не говоря уже о том, что ансибл - это не система Backup/Restore. И полностью делать систему восстановления на коде ансибла - тупиковый путь
Sergey
И вообще совсем не обязательно делать все это одной ролью
Такое мнение тоже имеет право на жизнь, но в моей практике подход "один сервис = одна роль" себя неоднократно показывал с самой лучшей стороны.
Max
Такое мнение тоже имеет право на жизнь, но в моей практике подход "один сервис = одна роль" себя неоднократно показывал с самой лучшей стороны.
некоторые сложные сервисы имеют этапы, которые имеет смысл вынести в отдельные роли. напр. установить кластер, добавить ноду в кластер
Terry
Это не говоря уже о том, что ансибл - это не система Backup/Restore. И полностью делать систему восстановления на коде ансибла - тупиковый путь
эм, ну нет же, это скорей один из почти готовых "костылей" для "подпилить для наших потребностей"
Terry
если речь о бекапе и ресторе из него
Timur
Такое мнение тоже имеет право на жизнь, но в моей практике подход "один сервис = одна роль" себя неоднократно показывал с самой лучшей стороны.
Снятие и восстановление бэкапа - это не роль. Это, скорее, совершенно отдельные этапы без конкретных состояний и идемпотентности. Как ты себе представляешь идемпотентный код снятия бэкапа, например?
Max
Нежелание пилить роли на таски и теги - тоже аргумент.
это вопрос религии. тэги имеют свои недостатки.
Max
а разбив на таски - значит ты (может быть) собираешься вызывать тасклисты , или создаешь "модальность".
Max
делать роль модальным монолитом, или маленькими микро-ролями - вопрос философии, "религии".
Max
имхо, с т.з. тестабильности легче работать с маленькими ролями.
Max
имхо, религия.
Александр
вопрос
Александр
если у файла совпадает всё, кроме таймстампа, copy его перезапишет?
Александр
и если да, то можно ли сделать чтобы перезапись была только по sha-хэшу?
Timur
Такое мнение тоже имеет право на жизнь, но в моей практике подход "один сервис = одна роль" себя неоднократно показывал с самой лучшей стороны.
т.е. выносить общие настройки кластера в отдельную роль это плохая практика? У меня, например, в общих настраивается мониторинг, ставятся базовые пакеты ну т.п. вещи
Terry
читаю вот это все, и слегка охреневаю от уровня абстракций и их глубины, а у самого бекап по крону на баше делается😱🤷‍♀
Pavel
всем привет. подскажите, мне нужно иметь OpenSSL на сервере. веб-сервер крутится на имейдже nginx:alpine, в котором с некоторых пор отсутствует данный пакет. задача усложнена тем, что на сервере контейнеры запускаются не компоузом, а через ansible. у меня сейчас главный вопрос, каким путем стоит пойти? пытаться ансиблом затащить OpenSSL внутрь скачанного имейджа (что мне кажется не совсем верным)? или все же запускать отдельный контейнер с OpenSSL и коннектить его с nginx?
Pavel
все же пересобрать имейдж? хм
Terry
все же пересобрать имейдж? хм
дальнейшие пляски породят костыли, а так будет ссл, а следующее поколение не будет вспоминать тебя плохим словом
Terry
а что плохого в бэкапе по крону на баше? :)
ничего, просто вот эти все абстракции меня приводят в ужас, вангуюю появление AnsibleOps как и PiOps
Pavel
дальнейшие пляски породят костыли, а так будет ссл, а следующее поколение не будет вспоминать тебя плохим словом
а можно ли обойтись без докерфайла на хосте, где нужно перебилдить образ? т.е. как-то на уровне плейбука пеедать, что при билде добавить туда ыыл?
Pavel
да
Pavel
у меня веселая история с докеркомпоузом для локальной разработки и и без него для площадок
Terry
да
суслика видишь? -нет - а он есть
Timur
да
а можно пример такой необходимости, и почему её нельзя решить монтированием соотв. файлов и т.п. вещей
Timur
чисто теоретически интересно
Kirill
Если это будет нужно не только тебе я-бы посоветовал посмотреть на Ansible Tower/AWX
Ansible Tower/AWX как-то вообще не понятно что за тулза, для начала мне кажется лучше хорошенько Ansible изучить)
Kirill
А кстати, в РФ где-то можно сертификацию по Ansible пройти?
Timur
не понял вопроса. о какой необходимости идет речь?
о необходимости билдить контейнер там, где вы будете его использовать
Kirill
да, но нет смысла
А если работа удаленная, и требуют на работе?
Timur
я просто пытаюсь представить кейс и у меня не получается
Timur
а для общего образования было бы интересно
Старый
А если работа удаленная, и требуют на работе?
😐ну тогда можно, но опять же не оч понимаю смысл, ансибл через год уже будет сильно отличатся
Timur
крайне плохая практика
я так тоже не делаю, но вот кому-то приходится, и мне интересно - зачем и почему :)
simplemice.eth
А кстати, в РФ где-то можно сертификацию по Ansible пройти?
DO407 можно сдать в рф, в гугле есть много контор в зависимости от вашего региона
simplemice.eth
но оно не нужно, только если вы работаете с заказчиками вне РФ
Anonymous
я так тоже не делаю, но вот кому-то приходится, и мне интересно - зачем и почему :)
Ответ один - некорректно выстроен процесс развёртывания.
Pavel
да, это я что-то тормознул. у меня другие контейнеры в CI билдятся
Pavel
точнее другой контейнер - приложения (node.js)