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