Цитата из Условные выражения с включением:
Когда вы используете условное выражение в операторе include_*, оно применяется только к самой задаче включения, а не к каким-либо другим задачам во включенных файлах.
Это работает так, как ожидалось
- include_tasks: set-x.yml
когда: x не определен
Никакая задача из включенного файла не будет использоваться
ЗАДАЧА [include_tasks] **************************************************** **
включено: /export/scratch/tmp8/set-x.yml для локального хоста
Иная ситуация с блоки. Цитата из Группировка задач блоками:
Все задачи в блоке наследуют директивы, применяемые на уровне блока. ... Директива не влияет на сам блок, она наследуется только задачами, заключенными в блок. Например, оператор when применяется к задачам внутри блока, а не к самому блоку.
Если вы положите include_tasks в блок
- блокировать:
- include_tasks: set-x.yml
когда: x не определен
условие применяется ко всем задачам. Также к включенным задачам, тем самым отменяя предыдущее правило, согласно которому условие применяется только к самой включенной задаче.
ЗАДАЧА [include_tasks] **************************************************** ***
включено: /export/scratch/tmp8/set-x.yml для локального хоста
ЗАДАЧА [set_fact] **************************************************** ********
хорошо: [локальный хост]
ЗАДАЧА [отладка] **************************************************** ***********
пропуск: [локальный хост]
Откройте проблема если вы думаете, что это ошибка.