Ansible belgelerinden :
Delegasyon Bu aslında güncellemeye özgü değildir, ancak bu gibi durumlarda sıklıkla ortaya çıkar.
Bir ana bilgisayarda diğer ana bilgisayarlara referansla bir görev gerçekleştirmek istiyorsanız, bir görevdeki 'delegate_to' anahtar sözcüğünü kullanın. Bu, düğümleri yük dengeli bir havuza yerleştirmek veya kaldırmak için idealdir. Ayırma pencerelerini kontrol etmek için de çok kullanışlıdır. Tüm görevleri devretmenin, hata ayıklama, add_host, include vb. İşlemlerin her zaman denetleyicide yürütülmesinin mantıklı olmadığını unutmayın. Bir kerede yürütülen ana bilgisayar sayısını kontrol etmek için bunu 'seri' anahtar kelimesi ile kullanmak da iyi bir fikirdir:
---
- 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
Bu komutlar Ansible çalıştıran makine olan 127.0.0.1'de çalışır. Ayrıca görev başına kullanabileceğiniz bir steno sözdizimi de vardır: 'local_action'. Yukarıdaki ile aynı oyun kitabını, ancak 127.0.0.1'e yetki vermek için steno sözdizimini kullanarak:
---
# ...
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 }}
Yaygın bir örüntü, dosyaları özyinelemeli olarak yönetilen sunuculara kopyalamak için 'rsync'i çağırmak için yerel bir eylem kullanmaktır. İşte bir örnek:
---
# ...
tasks:
- name: recursively copy files from management server to target
local_action: command rsync -a /path/to/files {{ inventory_hostname }}:/path/to/target/
Bunun çalışması için parola içermeyen SSH anahtarlarınız veya bir ssh aracısının yapılandırılmış olması gerektiğini, aksi takdirde rsync'in bir parola istemesi gerekeceğini unutmayın.
sudo: no
Delegasyon senaryosunda da ihtiyacım vardı