George
Роль универсальна. Она предназначена для запуска на разных платформах. Разные платформы - имею в виду и то, где ансибл запускается. И целевая машина, куда роль применяется. Файловая система может быть разная. Может быть case-sensitive, может быть нет. В случае, если не вылезаешь за пределы linux - ок. Если добавляется винда и мак - это требует дополнительного изучения вопроса. Т.к. иногда это может вызывать проблемы, иногда - нет.
George
Условно файлы WinNT.yaml и winnt.yaml могут быть одним, а могут считаться как разные. Поэтому я и сказал, что безопаснее писать все файлы в ловеркейс и не допускать дублирования файлов с точностью до регистра
Timur
Точно нет? А Пайтона на Винде нет? А целевую виндов машину ансиблом не залить ?
Как мастер ансибл на винде точно не запустить из коробки. Даже с питоном. Если только через WSL
Timur
Если же таких файлов в одной директории нет, то какие проблемы с регистром вы видите?
Timur
Так мы и не провоцируем - никто не делает таких одинаковых файлов в одной директории с отличиями только в регистре
Timur
На системе, нечувствительной к регистру, никаких проблем с запуском роли и обращением к файлам не будет, т.к. там автоматически игнорируется регистр
Timur
Зато, если неправильно задавать регистр в файлах, которые шаблонизируются в соответствии с фактами ансибл, то на системах, чувствительных к регистру, как раз могут быть проблемы
George
Ещё раз повторюсь, что я бы не провоцировал и в линтере тупо запретил CamelCase и разрешил lowercase
Timur
Ещё раз повторюсь, что я бы не провоцировал и в линтере тупо запретил CamelCase и разрешил lowercase
А с фактами ансибла что делать предлагаете? Тоже все в lowercase конвертировать принудительно?
George
Я не спец по ансибл, но фиксация на регистре выглядит как баг
Timur
Не привязывать факты к названиям файлов.
И как вы предлагаете организовывать ветвление в зависимости от фактов тогда?
George
И почему вообще нужно делать универсальные роли? Ок, для линукса и мака, например, пускай будет одна роль. А вот виндовс - почему отдельно не вынести ?
Timur
Писать портянки дублирующегося кода, обвешанного условиями типа when: ansible_os_family == 'RedHat'?
Timur
И почему вообще нужно делать универсальные роли? Ок, для линукса и мака, например, пускай будет одна роль. А вот виндовс - почему отдельно не вынести ?
Даже только для линукса - есть ветвления по типам дистрибутива, версиям, типам сервис-менеджера и т.п. И эти факты зачастую не в lowercase
George
Даже только для линукса - есть ветвления по типам дистрибутива, версиям, типам сервис-менеджера и т.п. И эти факты зачастую не в lowercase
Я в курсе, спасибо. Насчёт фактов - ну, хешмапу в конце-концов соберите. В которой отображайте свой выбор на имя файла
Timur
Не лучший вариант, имхо
Ну, так других вариантов и нет особо. Либо портянки с when, либо один динамический инклуд тасков по шаблону на основе фактов, как у нас
George
Ну, так других вариантов и нет особо. Либо портянки с when, либо один динамический инклуд тасков по шаблону на основе фактов, как у нас
Что ещё раз доказывает, что ансибль кривоват местами. Но это не повод от него отказываться.
George
Интересно, почему парни так chef не любят.... Потому что руби? Я реально не видел людей, которые свои модули пишут, а не роли и плейбуки, чтобы пайтонячья натура ансибль была полезна
Timur
Что ещё раз доказывает, что ансибль кривоват местами. Но это не повод от него отказываться.
Ну, т.е. лучших предложений по ветвлениям на основе фактов у вас нет - я правильно понял?
checkdiff
Ты видел freeipa роли? Там все на своих модулях. И чтобы точно понять, что роль будет делать - надо еще в модулях копать)
Timur
Include же, только с фильм ром lowercase
Ну, можно, да. Но это сильно ухудшает читаемость и усложняет поддержку, на мой взгляд. А бенефиты не очевидны, кроме того, что кому-то не нравится Uppercase
checkdiff
В galaxy кстати они не выложили,что странно, есть только на гитхабе плейбук.
Timur
Ты видел freeipa роли? Там все на своих модулях. И чтобы точно понять, что роль будет делать - надо еще в модулях копать)
Ну, когда один модуль, расширяющий функциональность под конкретную задачу - еще понятно
Timur
А когда вся роль на кастомных модулях, то тогда вообще непонятно - зачем там ансибл?
Timur
Так кто-то еще ролями из общего доступа пользуется? Или все свои велосипеды пилят? :)
Timur
Я бы предположил, что lowercase пошел от pep8, то есть языка на котором написан ансимбль
У вас есть соображения, какой плюс будет от добавления фильтра lower ко всем вызовам фактов в роли? Кроме условжнения поддержки и ухудшения читабельности
checkdiff
Ко всем не имеет смысла. А читаемость роли - не знаю, если говорить про использование роли - то ее не надо читать, ее надо использовать
Timur
Цель опроса какая ?
Интересно узнать - какие роли наиболее востребованы в коммьюнити
George
Написать список основного софта, который нужно уметь раскатывать ими ?
George
Или речь именно про конкретные роли? Но тогда вопрос, наверное, бессмысленен, т.к. вся статистика есть на гелекси ?
Timur
Ко всем не имеет смысла. А читаемость роли - не знаю, если говорить про использование роли - то ее не надо читать, ее надо использовать
Читаемость кода имеет значение. Нужно, чтобы роль любой инженер мог легко понять, увидев в первый раз
George
Правильно - любой подготовленный
Vladimir
Timur
Или речь именно про конкретные роли? Но тогда вопрос, наверное, бессмысленен, т.к. вся статистика есть на гелекси ?
Там статистика не вполне корректная. Счетчик там любые обращения к роли считает, даже если это просто вызов ansible-galaxy info
Timur
Правильно - любой подготовленный
Так какие бенефиты от дополнительного фильтра в роли - можете описать?
George
Так какие бенефиты от дополнительного фильтра в роли - можете описать?
Вопрос нерелевантен. Предлагаю на этом закончить
Timur
Ну, наверное, им нужно об этом написать? А то, вдруг, они не знают?
Вы сами какие роли чаще всего используете? Если используете, конечно
George
Вы сами какие роли чаще всего используете? Если используете, конечно
А это тут причем? Насчёт статистики - ну, ес-но, выгоднее использовать готовое. Специфика работы, что нужен мониторинг , логгирование
Timur
А это тут причем? Насчёт статистики - ну, ес-но, выгоднее использовать готовое. Специфика работы, что нужен мониторинг , логгирование
Что при чем? Я вопрос задал - какие роли вы чаще всего используете. Можете ответить? Если секрет - можете не отвечать, конечно
George
Поэтому за последний месяц - оригинальная роль elastic от вендора, 3* роли от cloudalchemy и ещё одна на кибану, которая написана французом (или итальянцем) https://github.com/fedelemantuano/ansible-kibana/
Timur
Роль эластика от вендора мы себе взяли с небольшими допилами
George
Быстрый провижионинг виртуалок - не ролью, а тупо плейбуком. Нарезать юзеров, поставить докер, поправить сисктл и хостнейм. Все как обычно
Timur
кибану свою пилим. В имеющихся обычно нет готовой кастомизации, чтобы нужные темплейты, визуализации и прочее сразу загружались из коробки
Timur
Единственное, чего я не понимаю, это вот подобных тасков: https://github.com/fedelemantuano/ansible-kibana/blob/develop/tasks/compatibility-variables.yml
George
И там тоже ваш нелюбимый Uppercase в названиях файлов :)
В его случае это не имеет смысла, ибо
George
Timur
Где в несколько шагов во время плея задаются вполне элементарные значения переменных с данными, доступными на момент запуска
Timur
В его случае это не имеет смысла, ибо
Вы о чем? Раскройте тезис детальнее, пожалуйста
George
Вы о чем? Раскройте тезис детальнее, пожалуйста
Посмотрите как он иклюдит ямлы. Он легко мог сделать все ловеркейсом. См.скрин выше
Timur
Вызов нескольких тасок ради одного ветвления по версии ОС
Timur
Что же касается динамического инклуда, то там это тоже есть: - name: os-specific vars include_vars: "{{ ansible_os_family }}.yml" tags: - always
Timur
В целом роль неплохая, да