Из документации Ansible :
Делегирование Это не конкретное обновление, а часто встречающееся в таких случаях.
Если вы хотите выполнить задачу на одном хосте со ссылкой на другие хосты, используйте ключевое слово «Delegate_to» в задаче. Это идеально для размещения узлов в пуле с балансировкой нагрузки или их удаления. Это также очень полезно для управления окнами отключения. Имейте в виду, что не имеет смысла делегировать все задачи, debug, add_host, include и т. Д. Всегда выполняются на контроллере. Использование этого с ключевым словом «serial» для управления количеством хостов, выполняющихся одновременно, также является хорошей идеей:
---
- hosts: webservers
serial: 5
tasks:
- name: take out of load balancer pool
command: /usr/bin/take_out_of_pool {{ inventory_hostname }}
delegate_to: 127.0.0.1
- name: actual steps would go here
yum:
name: acme-web-stack
state: latest
- name: add back to load balancer pool
command: /usr/bin/add_back_to_pool {{ inventory_hostname }}
delegate_to: 127.0.0.1
Эти команды будут работать на 127.0.0.1, то есть на машине, на которой работает Ansible. Существует также сокращенный синтаксис, который вы можете использовать для каждой задачи: «local_action». Вот та же книга воспроизведения, что и выше, но с использованием сокращенного синтаксиса для делегирования 127.0.0.1:
---
# ...
tasks:
- name: take out of load balancer pool
local_action: command /usr/bin/take_out_of_pool {{ inventory_hostname }}
# ...
- name: add back to load balancer pool
local_action: command /usr/bin/add_back_to_pool {{ inventory_hostname }}
Распространенным шаблоном является использование локального действия для вызова rsync для рекурсивного копирования файлов на управляемые серверы. Вот пример:
---
# ...
tasks:
- name: recursively copy files from management server to target
local_action: command rsync -a /path/to/files {{ inventory_hostname }}:/path/to/target/
Обратите внимание, что у вас должны быть SSH-ключи без паролей или ssh-agent, настроенный для этого, иначе rsync должен будет запросить парольную фразу.
sudo: no
в сценарии делегирования