ansible: приоритет `run_once` в сочетании с` когда`? - PullRequest
1 голос
/ 27 сентября 2019

У меня есть несколько хостов, и когда я обнаруживаю один с установленным 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.

...