В идеале я бы хотел сделать что-то вроде:
- include: deregister_from_loadbalancer.yml
delegate_to: loadbalancer
Таким образом, у меня все еще есть доступ к vars для хоста, против которого я веду общую игру, но действия происходят на хосте loadbalancer.
Я не могу просто разбить это на отдельные пьесы, потому что я выводю машины из ротации балансировщика по одной за раз. Разделение на несколько пьес означало бы что-то вроде:
- hosts: loadbalancers
tasks:
- include: remove_from_loadbalancer.yml
vars:
machine: "{{ item }}"
with_items: "{{ groups['webservers'] }}"
# at this point in the play I'm being fired for gross incompetence
- hosts: webservers
tasks:
# ... update them
- hosts: loadbalancers
tasks:
- include: add_to_loadbalancer.yml
vars:
machine: "{{ item }}"
with_items: "{{ groups['webservers'] }}"
Если опубликованный вами пример ...
- include: deregister_from_loadbalancer.yml
delegate_to: loadbalancer
... не работает, еще можно. Включаемые компоненты обычно могут принимать параметры, поэтому вы можете записать их как:
- include: deregister_from_loadbalancer.yml
delegate_host: loadbalancer
И в вашем включить deregister_from_loadbalancer.yml
вы используете этот var для делегирования всех своих задач, а затем:
- some: task
delegate_to: "{{ delegate_host | default(omit) }}"
- another: task
delegate_to: "{{ delegate_host | default(omit) }}"