Timur
George
xyproblem.info
Артём
Sometimes I’ll even answer a user’s original question and then post a big write-up on why what they are trying to do is a bad idea.
https://blog.mattbierner.com/10-years-stack-overflow-learnings/
Dmitry
Вы раскрывайте мысль что-ли
Sergey
Вы раскрывайте мысль что-ли
1. Ты хочешь странного
2. Ансибл - не интерпретатор, хотя может почему-то таковым казаться.
3. Ещё раз: разберись с объектной моделью. Роль сама по себе - ничто. Хосты и некие их свойства, задаваемые через хостварс/групварс, наследуемые, перопредлеяемые и "сплющиваемые" перед запуском плейбука в словарь hostvars - всё.
Dmitry
Почему странного? Я хочу общие части кучи ролей вынести в одну.
Sergey
Как выглядит первоначальная задача?
Dmitry
Она описана выше. Есть роли отдельных сайтов, у них есть большая общая часть
Dmitry
Нет, это совершенно разные и никак не связанные наборы тасков
Petr
можно пример? очень сложно так обсуждать задачу без небольшой конкретики
Sergey
Anton
а по моему вопросу, я так понимаю, оптимального решения нет?
Sergey
Anton
Dmitry
Для одного сайта мне нужен Апач и пхп, для другого питон и монга, для третьего MySQL и перл. Но для каждого нужна одигаковая зависимость от nginx, конфиг для него, настройки мониторинга, статистики, ротации логов, доменов и т.д
Sergey
С точки зрения "потом не стыдно показать кому-либо" - норм.
Konstantin
Коллеги, всем привет
Снова я затупил со списками. Вопрос такоой: есть лист A B C D E , как бы его преобразовать в словарь, с интератором. то есть A:1 B:2 C:3 ну и тд?
Sergey
Dmitry
Sergey
Dmitry
А-а, вот это наверное правильное направление, спасибо
Dmitry
Т.е. плей на сайт. Тогда, правда, другие общие вещи будут дублироваться. Когда Апач нужен нескольким сайтам
Sergey
Dmitry
Я не хочу её явно указывать. Мне нужен сайт, остальное меня не волнует. А он должен зависеть от всего что ему нужно.
Dmitry
При этом сайт с хостнеймом foo.org должен зависеть от апача с хостнеймом foo.org
Dmitry
В общем я понял идею - красиво не получится, придётся всё явно перечислять в отдельных плеях
Dmitry
Причём того что я хочу почти можно добиться через include_tasks, но там, понятно, не будет dependencies
Lamobot
Konstantin
Timur
Timur
Timur
В этом суть ролей
Dmitry
Я бы может и поверил, если бы не было dependencies, include и import
Timur
Dmitry
больше - не больше, есть конкретоно include_role и import_role
Timur
dependencies через meta есть, но это стрельба по ногам
Timur
Dmitry
нет, это модули
Timur
Я о том, что их имеет смысл применять только на уровне плейбука
Timur
Роли должны быть независимыми для переносимости
Timur
Как только их обвешиваешь зависимостями - переносимость ролей теряется и получается просто большой монструозный плейбук под видом роли
Dmitry
Это не стрельба по ногам, это то как в моём понимании должно работать описание конфигурации. В соотстветствии с базовыми принципами DRY и SSOT
Timur
Dmitry
Роли должны быть независимыми для переносимости
Если сайту нужен nginx - это факт от которого никак не уйти, и на переносимость он никак не влияет. Если его не указать в роли, значит только то что его нужно будет указать в другом месте. И там его можно будет забыть
Timur
Timur
Timur
Это как раз то, для чего и нужны роли
Timur
Timur
Потому что в другой роли у тебя неявная зависимость
Dmitry
> Никакое это не нарушение
Т.е. повторение это не повторение
> А это выстрел в ногу
Пошли на второй круг?
Dmitry
Timur
Timur
Ставится отдельной ролью. Но по зависимости, не требуя явного указания
Dmitry
По явной зависимости внутри роли. Не требуя явного указания в плейбуке.
Timur
Timur
Dmitry
Понятное дело. Речь о том где её указывать - в роли, про которую точно известно что её нужна зависимость, или в плейбуке где точно известно что нужен сайт, а что там нужно ему - его личное дело
Dmitry
> Явное лучше неявного
Конечно, поэтому только явные зависимости между ролями, а не просто перечисление ролей которые могут быть или не быть неявно связаны.
Timur
Dmitry
Это и значит. Роль не имеет смысла и не может работать без другой роли.
Timur
Dmitry
Нет, это явная зависимость
Timur
Dmitry
И что это тогда, интересно?
Dmitry
И как вы определяете роль?
Timur
Это какой-то код, который вы по недоразумению считаете ролью
Timur
И как вы определяете роль?
Роль - это условно набор тасков, шаблонов, файлов и параметров, позволяющих легко выполнять одну и ту же задачу в разных вариациях и в разных окружениях
Dmitry
Ну с моим определением это совпадает.
Timur
Роль как сущность никаких неявных зависимостей внутри себя содержать не должна
Timur
Иначе переносимость идёт лесом
Dmitry
Я уже написал почему это не так.
Timur
Dmitry
Что не должна содержать зависимостей и это как-то влияет на переносимость.