De la documentation Ansible :
Délégation Ce n'est pas réellement une mise à jour continue, mais revient fréquemment dans ces cas.
Si vous souhaitez effectuer une tâche sur un hôte en référence à d'autres hôtes, utilisez le mot clé 'delegate_to' sur une tâche. C'est idéal pour placer des nœuds dans un pool à charge équilibrée ou pour les supprimer. Il est également très utile pour contrôler les fenêtres d'interruption. Sachez qu'il n'est pas logique de déléguer toutes les tâches, déboguer, ajouter_hôte, inclure, etc. toujours s'exécuter sur le contrôleur. L'utiliser avec le mot clé 'serial' pour contrôler le nombre d'hôtes s'exécutant en même temps est également une bonne idée:
---
- 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
Ces commandes s'exécuteront sur 127.0.0.1, qui est la machine exécutant Ansible. Il existe également une syntaxe abrégée que vous pouvez utiliser pour chaque tâche: «action_locale». Voici le même playbook que ci-dessus, mais en utilisant la syntaxe abrégée pour la délégation à 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 }}
Un modèle courant consiste à utiliser une action locale pour appeler «rsync» afin de copier récursivement des fichiers sur les serveurs gérés. Voici un exemple:
---
# ...
tasks:
- name: recursively copy files from management server to target
local_action: command rsync -a /path/to/files {{ inventory_hostname }}:/path/to/target/
Notez que vous devez avoir des clés SSH sans phrase de passe ou un agent ssh configuré pour que cela fonctionne, sinon rsync devra demander une phrase de passe.
sudo: no
dans le scénario de délégation