Egor
Dmitry
В каждой роли папку meta, в ней main.yml, а в нем нужную зависимость. Потом запускать роли: ansible-playbook -i inventory play/sitea.yml -e 'hostname=sitea.com' Или я что-то не так понял?
СайтА, сайтБ с прописанными хостнеймами (через vars для роли) уже определены в плейбуке. Да, допустим через dependencies они тянут общую роль. Но она запускается 2 раза с последним хостнеймом.
Sergey
Привет. Скажите, а наследование ролей есть в каком-то работающем виде? Хочу роли сайтА, сайтБ параметризируемые хостнеймами (разными). Они должны наследоваться от роли сайт, которая выполняет общие таски. Пробовал dependencies, include_role, import_role - во всех случаях роль сайт выполняется два раза, но с одним и тем же хостнеймом
У тебя, по сути, должна работать одна и та же роль, поэтому тебе придётся разобраться в объектной модели Ансибла. Хост = "сущность, к которой можно каким-то обрзаом подключиться и запустить команду/команды" Роль = "набор заданий (тасков), определённым образом сгруппированный, дополняющий загрузчики файлов Ансибла некоторыми предустановленными путями"
Sergey
Если хост, на котором сайтА и сайтБ должны появиться, один и тот же, то ты тупо выцываешь роль в цикле, при этом роль применяется к одному и тому же хосту. Если же нет - то хосты включаются в группу, а роль применяется к группе. Соответственно, отличия сайтов друг от друга переезжают в хостварс.
citius
думаю что болт будет. в requirements можно указать версию роли в гите, но он их в одну и ту же папку скачает. так что да, что последним то и в дамках.
citius
очертите проблему плз, не очень понятно о чем речь.
citius
ну рантайм то один.
citius
избегайте этого.
citius
или в хостварс определять, но дебажить это, будет, ммм
citius
да даже если в хостварс - хост на котором есть обе роли, будет некорректно отрабатываться
citius
я в своих ролях всегда префиксую переменные, чтобы пересечений не было типа роли редиса и постгреса обе могут юзать какой нить cluster_name
citius
соответственно определяю отдельно redis_cluster_name и pgsql_cluster_name
citius
но в роли это есессно так и должно использоваться, а не просто cluster_name
citius
а какие варианты еще есть например?
citius
ну ансибл же не язык программирования.
UglyKoyote
ты ещё скажи что ямл программистов нету))
Timur
А не надо так делать, если только это не специально согласованные роли с общим набором переменных
Timur
Да
Sergey
это всё просто для того, чтобы не поднимать свой уровент владения инструментом?
citius
кроме того, про "варианты" мне скорее более интересен вопрос чем заменить можно ансибл. солт стек с еще бОльшими закидонами, и очень сложно оркестрировать что-то выходящее за рамки одного хоста. папет - рубятина, и вроде дохлый практически в плане развития. чеф - еще больше рубятина и еще кондовей.
citius
т.е. отказаться от ансибла то можно, но что делать, на питоне писать свои идемпотентные скрипты чтоли? :)
Timur
Глобальность переменных в ансибле - не баг, а фича
Timur
Просто нужно понимать, что и зачем ты делаешь
Timur
А если хочется программировать - никто не мешает взять чистый питон и писать автоматизацию на нем
citius
и фича-то, кстати, офигенная.
Timur
Сделайте что-то лучше
UglyKoyote
кмк человек просто троллит чат. слишком уж жирно всё выглядит
Timur
Глобальность переменных с определением на разных уровнях позволяет очень гибко управлять конфигурацией
UglyKoyote
это как бы линуксятник пришел в чат виндовса и начал жаловаться на всё виндовое
Timur
И не думать - а глобальная у меня здесь переменная или нет
Timur
это как бы линуксятник пришел в чат виндовса и начал жаловаться на всё виндовое
Была где-то подобная юмористическая статья, помню. Про линуксоида, пересевшего на Windows. Со всякими наивными вопросами. Типа "а как тут одной командой обновить весь софт?"
Timur
Напишите свой вариант ансибла. Если он окажется удобнее - все перейдем на него
Sergey
Ты, кстати, ступаешь по очень тонкому льду: можно провалиться прямо в R/O. Пятница, конечно, этот лёд чутка утолщает, но отсутствие какого бы то ни было конструктива в высказываниях катастрофически утончает .
Timur
UglyKoyote
вот блин.. а я то думал что ансибл это серебрянная пуля на все ситуации. 5 лет жил в неведении
citius
кмк, негодование не про минусы, а про отсутствие конструктива в этом обсуждении.
citius
именно про вас :) да, ансибл работает так. хотите изменить - issue/PR, если будет круто - войдет в инструмент. в чем конструктив дальнейшего обсуждения?
citius
по ансиблу тонна инфы в интернете - и книги и статьи, и лекции, и чего только нет
citius
https://www.reddit.com/r/ansible/comments/9ao3ae/resources_to_learn_ansible/
UglyKoyote
напиши юнит
UglyKoyote
я по себе знаю - ворчать это проще.. ибо критиковать это сильно проще
citius
а вы реально весь-весь тамошний материал уже изучили?
Sergey
"Фишки" is a lie. Нет в Ansible фишек. Изучи его обектную модель - и всё, фишки куда-то мгновенно исчезают.
citius
ну тогда сдаюсь а, погуглите еще видео с конференций, @tnt4brain много интересного из подкапотного и бест практис рассказывал
Sergey
VolanDeMort? У нас вроде тут запретных имён нет.
Sergey
Так, опять....... А кто за тебя должен вот это всё сделать? 1) добавить то, чего нет, в подборку; 2) взять себя за что угодно и оформить PR с желаемыми фичами
Grek 🇺🇦
может вам разжевать и в рот положить? тут как бы все добровлольно, нет того что надо и добрые люди не помогают за просто так - сделай, сам, разберись, напиши, покажи с примерами, гордись собой, еще и спасибо скажут. а так - то давайте перестанем кормить троля
Sergey
Ну чтобы не ныть об этом в чате и не попасть в R/O за неконструктив
Sergey
Это последнее предупреждение
Sergey
Сутки R/O
Pit
Сутки R/O
Я тут пробегал мимо несколько раз за неделю и все ждал когда оно случится.
Anton
ребятули, тупой вопрос. допустим, у меня в плейбуке 100 задач, которые требуют become: yes и 100 задач, которым нужны всякие переменные типа ansible_user_dir, но не рутовые, а пользователя, в окружении которого плейбук запускается. на уровне плейбука я сделать become не могу получается, мне become каждой из 100 задач делать что ли? или вводить новые переменные? как это решается?
Anton
а покрасивше никак?
Sergey
Здесь скорее речь о минимально возможном зле. А судя по количеству тасков - речь о башсибле?.....
Timur
а покрасивше никак?
Красота - понятие относительное
Alexander
Сутки R/O
Сообщения того человека удалились? А то я хотел почитать и непонятно что за спор
Timur
Как вариант - внутри плея можно сделать блоки с become
Alexander
Нехороший человек
Anton
Здесь скорее речь о минимально возможном зле. А судя по количеству тасков - речь о башсибле?.....
ну окей, допустим нужно установить программу через dnf (требуется become) и закинуть в каталог пользователя ansible_user_dir/bla/bla.conf конфиг этой программы.
Anton
ну вот это некрасиво, если это бить по нескольким плейбукам
Anton
В моём видении это всё - одна роль. А конфиг кладёт туда, куда ей скажут через параметры.
путь задается относительный, мне как пользователя то определять?
Anton
ну получается, дублировать эти переменные
UglyKoyote
ansible_user The user Ansible ‘logs in’ as. не это надо? а то во мне слишком много кофе
Sergey
путь задается относительный, мне как пользователя то определять?
сразу задаю тупой вопрос: относительный - относительно чего?
Anton
сразу задаю тупой вопрос: относительный - относительно чего?
/home/username/bla/bla.conf. мне прям абсолютный путь указывать? а через ansible_user_dir он красиво бы определил /home/username
Pit
сразу задаю тупой вопрос: относительный - относительно чего?
одмен что за слоумод? хотел по существу ответить, но не дали. К чему эти репрессии честных людей?
simplemice.eth
что бы люди писали в одно предложение а не столбиком, и по существу, спасибо тем кто это не делает
Anton
а потом еще овнера указывать, тоже придумывать новую переменную, а не использовать ansible_user_id
Anton
шот бред какой-то
Pit
что бы люди писали в одно предложение а не столбиком, и по существу, спасибо тем кто это не делает
иногда хочется ответить разным людям, странновато это делать в одном сообщении. Ну да ладно, суть понял
Sergey
Это все не имеет отношение к оригинальному вопросу который был про зависимости и/или инклуды ролей
Тогда перефразируй, чтобы было понятно, что от чего зависит, и вот это вот всё.
Dmitry
Тогда перефразируй, чтобы было понятно, что от чего зависит, и вот это вот всё.
Есть параметризируемая роль, она зависит от другой роли. Нужно чтобы эта другая роль тоже параметризировалась. Сейчас, если есть несколько ее экземпляров, все они используют одинаковые переменные, последние по ходу плейбука