Многие восхищаются гибкостью тегов и рекомендуют разделять ими сценарии исполнения кода в одной кодовой базе. По сути теги в Ansible — это аналог оператора
GOTO в инфраструктурном коде.Итак, ключевые доводы против использования тегов:
⚪️ Снижение читаемости и поддержки кода. Теги разбивают плейбуки на фрагменты и усложняют понимание общей логики выполнения задач.
⚪️ Проблемы с предсказуемостью. Теги позволяют запускать только определенные части плейбука, но это нарушает последовательность выполнения.
⚪️ Усложнение отладки и тестирования. С тегами отладка становится сложнее, так как нужно вручную проверять, какие задачи выполнялись, а какие нет.
⚪️ Риск дублирования логики. Для избежания зависимостей разработчики могут дублировать код в разных тегах, что увеличивает объем кода и вероятность несогласованности.
Альтернативы есть — можно использовать модули (
roles) и включения (includes) для структурирования плейбуков. Это позволяет разделить логику на логические блоки без необходимости прибегать к тегам.@DevOpsKaz 😛
