работала такая конструкция:
- include_role:
name: firewalld/{{ firewalld_role_version }}
when: firewalld_use is defined
После перехода на 2.10 оно перестало работать, но кусками. Например - если прогонять весь плейбук без тегов - то оно применяется. Если указать теги этой подключемой роли - то он её как будто не видит и игнорит всю роль. На что надо поменять что бы оно в 2.10 работало так же как и в 2.3?
Выкиньте теги нахер просто
Мы очень часто пользуемся тегами, это удобно
У нас своя специфика )
Тогда страдайте дальше
Тогда вас ждёт прекрасное будущее: 1) через 2-3 поколения админов уже никто не будет знать что произойдет если запустить плейбук без тегов 2) какая нибудь обезьяна во время отпуска тимлида запустит плейбук без тегов и все пойдет по пизде
У нас всё поставлено так, что запуск плейбука без тегов ничего не ломает. Всё периодически проверяем и перераскатываем как раз что бы избежать таких ситуаций.
Будет рыба - будем жарить )
Даже не в этом проблема, а в том, что трудно масштабировать наследование тегов при большом уровне вложенности. Рано или поздно возникнет ситуация (как в случае выше), что вам, например, нужно сделать include нужного участка кода, а теги при этом не унаследуются. Или унаследуются не все. Или не так. Или нужно будет сделать теги разного приоритета, а не получится. И т.п.
1) Для того чтобы работало всё внутри без тэгов есть тэг all который прописывается в том случае если начинаем использовать тэги в плэе и не хотим иметь геморой. + Есть документация, в которой обязано быть это всё описано, так же как и в самом начале плэйбука. 2) Я не тимлид (хотя... хз) Но есть пункт 1 в котором я описал всё. Если нет документации и описания. Или всё что там внутри реализовано не очевидно — завернуть в окружение типа jenkins через которое будут только переключатели типа ВКЛ/ВЫКЛ и кнопка "уничтожить америку". По крайней мере тэги собираюсь использовать только в "наружном" плэйбуке, который будет вызываться дженкинсом и внутри ролей естественно никаких завязок на тэги не будет
Так зачем именно теги, если можно просто обычные параметры использовать, которым легко задать дефолтные значения, а потом оверрайдить на любом уровне?
Делаешь playbook/main.yml - import_playbook: aaa.yml - import_playbook: bbb.yml - import_playbook: ccc.yml Если не надо запускать main.yml - запускаешь нужный и не превращаешь IaC в infrastructure as a bash (pipeline) history
По сути вы экономите 15 минут работы ценой ухудшения читабельности работоспособности и поддерживаемости кода
Объясните в чём будет ухудшение читаемости плэйбука? Фактом плэйбук будет состоять только из последовательного использования ролей. Тэги если они не заданы в вызове обозначены как all, если я из всех перечисленных в пэйбуке ролей с прикрепленными к ним тэгами перечислил только определенные, у меня эти определенные + те которые always отработают. При использовании переменных зависимостью от которых запускать или не запускать можно нарваться на переопределение значения переменной из другой роли или вызываемого плэя. В то время как использование тэга или в принципе включает в конечно сформированный из "исходников" список задач плэя, или не включает его. С тем же успехом, давайте у ножниц удалим кольца в которые продеваем пальцы для удобства. И будем говорить что пальцев на руках и их гибкости достаточно для того чтобы пользоваться такими ножницами.
Почти, только always. Плюс "деструктивные" теги полезно дополнять тегом "never" - тогда они будут запущены только при явном указании.
Смотрите. В нулевых вы уже столько же времени на спор потратили, сколько бы потратили на инклуды или when) Во-первых, осознать что там у вас внутри ролей, как оно вот прям точно будет вызываться, где какие теги будут дергаться а какие нет - это не на пять минут задача. Когда все задаешь явно это читать на порядок проще
Обсуждают сегодня