когда предложение не может оценить наличие тегов. В качестве обходного пути я использую переменные и теги вместе для запуска задач, специфичных для этого тега / переменной.
Пример: представьте себе книгу с книгами и инвентарь
# инвентарь
[DEV]
192.168.1.1
# site.yml
- хосты: dev
роли:
- {роль: обычная}
и в общем / tasks / main.yml
# role / common / tasks / main.yaml
- имя: установить ссылки
apt: name = состояние ссылок = присутствует
- включить: uninstall.yml
когда: uninstall_links определено
теги:
- удалить
# role / common / tasks / uninstall.yml
- имя: удалить ссылки
apt: name = состояние ссылок = отсутствует
При таком подходе вы используете тег для выбора только задач в uninstall.yml, но вам также нужно установить переменную 'uninstall_links' в какое-либо значение, чтобы включить ее. Так что если вы запустите playbook без каких-либо параметров, по умолчанию будет запущена задача установки. Чтобы удалить, вы можете установить тэг 'uninstall' для вашей книги воспроизведения (или cmdline) и ДОЛЖНЫ установить переменную. Если вы не установите тег, он будет запускать все (устанавливать и удалять) в указанном порядке, что хорошо для тестирования всего процесса.
Как все запустить (установит и удалит):
$ ansible-playbook -i inventory site.yml -l dev -s -k -e "uninstall_links=true"
Как запустить только тег «удалить» в группе разработчиков
$ ansible-playbook -i inventory site.yml -l dev -s -k -e "uninstall_links=true" -t uninstall
Следовательно, переменные и теги также могут находиться в файлах site.yml / инвентаризации, что позволяет вам зафиксировать в своем SCM и записать свое намерение.