Dari dokumentasi Ansible :
Delegasi Ini sebenarnya bukan bergulir khusus pembaruan tetapi sering muncul dalam kasus-kasus tersebut.
Jika Anda ingin melakukan tugas pada satu host dengan referensi ke host lain, gunakan kata kunci 'delegate_to' pada tugas. Ini sangat ideal untuk menempatkan node dalam kumpulan beban seimbang, atau menghapusnya. Ini juga sangat berguna untuk mengendalikan jendela yang padam. Perlu diketahui bahwa tidak masuk akal untuk mendelegasikan semua tugas, debug, add_host, termasuk, dll selalu dijalankan pada controller. Menggunakan ini dengan kata kunci 'serial' untuk mengontrol jumlah host yang dieksekusi sekaligus juga merupakan ide bagus:
---
- 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
Perintah-perintah ini akan berjalan pada 127.0.0.1, yang merupakan mesin yang menjalankan Ansible. Ada juga sintaks steno yang dapat Anda gunakan berdasarkan per tugas: 'local_action'. Berikut ini adalah buku pedoman yang sama seperti di atas, tetapi menggunakan sintaks singkatan untuk mendelegasikan ke 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 }}
Pola umum adalah menggunakan tindakan lokal untuk memanggil 'rsync' untuk menyalin file secara rekursif ke server yang dikelola. Berikut ini sebuah contoh:
---
# ...
tasks:
- name: recursively copy files from management server to target
local_action: command rsync -a /path/to/files {{ inventory_hostname }}:/path/to/target/
Perhatikan bahwa Anda harus memiliki kunci SSH tanpa frasa sandi atau ssh-agent yang dikonfigurasikan agar ini berfungsi, jika tidak rsync perlu meminta kata sandi.
sudo: no
dalam skenario delegasi