У меня есть несколько хостов, и когда я обнаруживаю один с установленным foo_binary
, я хочу запустить свою задачу.
Можно ли как-то использовать run_once
с when
для этого?
По сути, мне нужно, чтобы when
был применен в качестве начального "фильтра" до применения run_once
.
К сожалению, я читаю на https://github.com/ansible/ansible/issues/23594 ...
run_once
применяется только к ПЕРВОМУ хосту для попадания в цикл, если при условии, когда условие False, задание будет пропущено.Он НЕ работает на первом хосте, для которого когда установлено значение True.
Так есть ли простой идиоматический способ, возможно, с использованием delegate_to
в сочетании с вышеприведенным?
Я вижу, что в вышеупомянутой проблеме есть совет:
FYI we are able to do the desired behavior using include_tasks:
driver.yml:
- include_tasks: tasks_to_include.yml
when: conditional_matching_multiple_hosts
tasks_to_include.yml:
- debug: msg="only run on one of the matching hosts"
run_once: true
, но я бы хотел, чтобы все было проще в одном файле yaml.