Aleksandr
вот конкретно. со ссылкой на документацию, что так делать нельзя. или сам балабол
Sergei
Какие вы злые, уу
Gleb
да никто тебе не запрещает любую дичь делать, ансиболь все стерпит.
Sergei
А баш скрипты внутри таска стерпит?
Aleksandr
Какие вы злые, уу
да не, просто я хочу юзать обвычную проверку со стандартным when, но тут приходят люди и начинают без конкретики говорить что оказывается я криво ансибл использую
Aleksandr
да никто тебе не запрещает любую дичь делать, ансиболь все стерпит.
я готов признать твою правоту и извиниться если ты скажешь хоть один адекватный довод в пользу своих слов. пока его нет, это все звучит как бла-бла-бла.
Aleksandr
в моей задаче есть плейбук, который настраивает сервера. есть условно 10 клиентов, 10 соответствующих групп, в каждой из них N серверов. У нескольких клиентов есть единственное, специфичное для клиента отличие, настройка которого это 2 лишних таска. так в чем проблема если я хочу при раскатке плейбука проверять принадлежит ли хост одной из нескольких групп(заранее известных), чтобы на них сделать дополнительное действие? Разбивать плейбук на несколько и выполнять таски специфичные для хоста - вот это как раз оверхед. так вот скажи мне, почему по твоему мнению я вдруг не прав и потом буду говорить что ансибл тормозит?
Sergei
Этот when не сделает ансиболь более тормознутым. Ваш спор исчерпан, лол
Gleb
во-первых эта фраза была полу-шуточной, во-вторых в целом когда начинаешь использовать так как кажется удобным тебе, а не так как было запланировано в какой то момент это критической массы достигнет. Почему вы за when зацзацепились я не понял
Отделение Bereke Bank
Ты прав. Для каждого клиента должна быть своя репа с плейбуками и ролями. В таком случае 1) не надо разбивать один плейбук на несколько плеев 2) не будешь использовать каку с when
Отделение Bereke Bank
Andrey
Универсализация везде приводит к трудноподдерживаемой лапше из when, jinja etc
Andrey
содержать 10 реп ради 2 лишних тасков, ну такое, чесслово
Что тебе мешает сделать pre post tasks для такого клиента?
Andrey
Или гелекси с реквайрементс
Aleksandr
Универсализация везде приводит к трудноподдерживаемой лапше из when, jinja etc
это было бы справедливо если бы сервера выполняли разные роли. роль одна. просто из-за того что площадки разные, нужно доп действия.
Aleksandr
Что тебе мешает сделать pre post tasks для такого клиента?
в этом конкретном случае - ничего. а что если эти таски были бы зависимы от предыдущих действий? разбивать вот так я не хочу.. - hosts # 1 part - hosts # специфичные таски - hosts # 2 part типа мне как раз это кажется дичью в этлм случае
Dok
Блин, Буква
Dok
Д Е Л И Г Е Й Т _ Т У
Aleksandr
Блин, Буква
тщщщ, в интернете кто-то не прав)
Aleksandr
что делает роль и что делают доп таски можно узнать?)
роль подготавливает хост как коллектор логов для пересылки в siem. доп таски настраивают selinux
Aleksandr
Ты не прав
обоснуй.
Aleksandr
еще раз, я тут услышал кучу советов как сделать по-другому, но ни одного по делу почему делать как я хочу - не правильно
Отделение Bereke Bank
роль подготавливает хост как коллектор логов для пересылки в siem. доп таски настраивают selinux
https://github.com/lean-delivery/ansible-role-elasticsearch/blob/master/tasks/system/RedHat.yml#L36 https://github.com/lean-delivery/ansible-role-elasticsearch/blob/master/tasks/selinux-support.yml
Sergei
Вырубил selinux и не надо ничего настраивать %]
Aleksandr
и? это не решает мою проблему. мне надо настраивать селинукс только у нескольких клиентов
Aleksandr
я бы вырубил селинукс переводом серверов на дебиан, но увы и ах, не получится)
Sergei
А чем группы отличаются? Ос с селинукс и без?
Aleksandr
нет. группы по клиентам. [клиент1]-сервер1, сервер2, серверН,...
Отделение Bereke Bank
если селинукс включен везде - в чем проблема прогнать его настройку везде? если вкл только на некоторых хостах - пример выше
Aleksandr
на самом деле нет проблемы вообще никакой сделать еще 10ком разных способом. мне тупо было интересно как правилно сформировать when и я пришел с этим вопросом в комьюнити. Но вместо того чтобы ответить меня начали учить жизни, ну как всегда короче.
Dok
- block: - name: Make dirs in tratata-api container # [!] check owners and groups file: path: "{{ item.path }}" state: directory owner: "{{ item.owner }}" group: "{{ item.group }}" with_items: - path: "/etc/tratata-inspector/dhcp-hostsdir/" owner: tratata group: tratata - path: "/etc/tratata-inspector/rootwrap.d/" owner: root group: root - meta: flush_handlers when: "ansible_hostname == tratata_api_container" # UTILITY_ALL[0] - block: - name: Make dirs in utility_all container # [!] check owners and groups file: path: "{{ item.path }}" state: directory owner: "{{ item.owner }}" group: "{{ item.group }}" with_items: - path: "/tftpboot/pxelinux.cfg/" owner: tratata group: tratata - path: "/var/log/tratata-inspector/ramdisk/" owner: tratata group: tratata delegate_to: "{{ hostvars[groups['utility_all'][0]]['ansible_host'] }}" Как пример
Aleksandr
т.е. меня интересует именно решение с when чтобы знать как делать эту конструкцию. для знаний, для опыта.
Anton
Коллеги, как список вернувшийся из jinja явно указать что значения integer? Или каскадно обрабатывать внутри jinja можно?
Aleksandr
when: inventory_hostname in (groups['group1'] + groups['group2']) Страдай.
when: group_names | intersect(["bbb_servers", "aaa_servers"])
Aleksandr
when: inventory_hostname in (groups['group1'] + groups['group2']) Страдай.
Сергей, а можно еще раз для глупых, от чего страдать? я в упор не могу понять чем такой подход плохой. Может донести до меня это хоть кто-нибудь?
Отделение Bereke Bank
добавит имя группы в условие конечно же. а если будет в отпуске - второй админ точно не забудет этого сделать 👍🏽
Andrey
Если появится ещё один клиент с селинуксом, что ты будешь делать?
Обрастет гумном и джинджей и потом перепишет
Отделение Bereke Bank
у кого нибудь есть рабочий пример как из testinfra получить доступ к hostvars хоста во время выполнения molecule test ? в интернете ничего нормального не нашел
Aleksandr
Окей, а теперь если вы закончили терзать одну и ту же проблему, что если я вам скажу что это решение - на период перехода, пока всех клиентов до селинукса не дотяну? Почему вы упорно считаете что знаете инфраструктуру и обстоятельства человека лучше него?
Aleksandr
Если появится ещё один клиент с селинуксом, что ты будешь делать?
спасибо, ты был первый с адекватным ответом
Aleksandr
Господа как бы то ни было я свой вопрос уже решил, всем спасибо, пойду смывать все те ощущения от прекрасного общения с людьми
Sergey
Сергей, а можно еще раз для глупых, от чего страдать? я в упор не могу понять чем такой подход плохой. Может донести до меня это хоть кто-нибудь?
Да ты пойми, я отнюдь не считаю тебя глупым. Именно умный, образованный и понимающий человек может очень легко делать странное и отстаивать его нужность.. Другое дело, что ты фактически переписываешь кусок функциональности Ансибла на Ансибле же, но ускорения, как ребята из PyPy, ты не получишь, зато по дороге сломаешь несколько абстракций и предусмотрительно разложишь в помощь себе и другим несколько граблей.
Lamobot
спасибо, ты был первый с адекватным ответом
По-моему, это обсуждалось здесь, и не раз. Решается через group_vars, где ты нужным группам задаешь переменную, к примеру selinux_config: True И используешь эту переменную в роли/плейбуке
Sergey
@Bykva ну хотя бы вот так ^^^
Sergey
у кого нибудь есть рабочий пример как из testinfra получить доступ к hostvars хоста во время выполнения molecule test ? в интернете ничего нормального не нашел
Тут такое дело.... я не использую молекулу. Когда нету всех вот этих "when" и прочего, когда таски тупо сверху вниз по списку без всяких loop: "{{ groups['foo'] | intersect(groups['bar']) }}", то и проблем почему-то нет.
Отделение Bereke Bank
пичаль...ато на каратине делать нечего, решил молекулу к своим ролям прикрутить. шоб по феншую
Aleksandr
Так никто не против, расставляй грабель сколько считаешь нужным
я уже объяснил же 1) это временное решение 2) мне было интересно разобраться как сделать именно так как я придумал - это мой субботний ресерч 3) я принципиально в данном вопросе не слушаю людей которые не обосновывают свои ответы. За весь этот диалог я услышал всего пару доводов и да я с ними согласен, и нет они были не от тебя 4) не надо превращать комьюнити в лор. по моему мнению все были бы в выйгрыше если бы ответ строился в виде "чувак, вот ответ на твой вопрос, вот так сделать то что ты хочешь, но делать как ты хочешь не рекомендуется, потому что а,б,в, используй мой ответ на свой страх и риск". Но нам же всем западло писать такие красивые ответы, проще же гуаном полить, верно?
Aleksandr
На stackoverflow ответы на подобные вопросы есть
спасибо, блин, ну что ж ты сразу то не посоветовал??? я забыл про интернет... горе мне о горе
Sergey
Dok
В Zoom ограничения у бесплатных собраний. Например, по времени в 40 минут. Если что
Sergey
В Zoom ограничения у бесплатных собраний. Например, по времени в 40 минут. Если что
Приходи - посмотришь, подействуют ли они на эту встречу.
Vladimir
Темы то какие? А то может быть как интересно, так и совсем не интересно
Artem
А ссылочка в шапке будет ?
Aleksandr
В Zoom ограничения у бесплатных собраний. Например, по времени в 40 минут. Если что
иногда они дают бесплатно безлимит. Плюс лицензию нужно покупать только хосту, тому кто собирает встречу.
Sergey
Темы то какие? А то может быть как интересно, так и совсем не интересно
Тема - та, что чаще всего вызывает вопросы. Объектная модель Ansible (хосты, группы, плеи, плейбуки - вот это вот всё).
Отделение Bereke Bank
Roman
время конечно печалит
Ivan
Да
Сергей, запись будет?
Dok
Может хост купил )
Да я просто напомнил, чтоб форсмажора не случилось
Sergey
Кишочки будут?
Кишочки? Посмотрю по запросам посетителей 😊
Sergey
Сергей, запись будет?
Запись - нет. Это обесценивает смысл присутствия в онлайне.
Sergey
время конечно печалит
Что со временем?