Sobes.tech
Junior — Middle

Ansible-də tapşırıqların çox sayda hostda ardıcıl yerinə, eyni vaxtda işlədilməsini necə modernləşdirmək olar?

sobes.tech Süni İntellekt

AI-dan cavab

Ansible-də, varsayılan olaraq, tapşırıqlar bir neçə hostda paralel şəkildə icra olunur, lakin eyni host daxilində ardıcıl şəkildə yerinə yetirilir. Əgər siz eyni hostda bir neçə tapşırığı eyni vaxtda icra etmək istəyirsinizsə, async modulundan və poll parametrindən istifadə edə bilərsiniz.

Asinxron tapşırığın başlanğıcı nümunəsi:

- name: Uzun müddətli tapşırığı asinxron şəkildə başlat
  command: /path/to/long_task.sh
  async: 3600       # maksimum icra vaxtı saniyə ilə
  poll: 0           # tapşırığın tamamlanmasını gözləmək

Bu, tapşırığı başlatmağa və dərhal növbəti tapşırığa keçməyə imkan verir, onun tamamlanmasını gözləmədən.

Əgər müxtəlif hostlarda paralel tapşırıqların yerinə yetirilməsi nəzərdə tutulursa, bu Ansible-ın standart davranışıdır və konfiqurasiya faylında forks parametri ilə tənzimlənə bilər, bu da eyni vaxtda əlaqələrin sayını artırır.

Paralel əlaqələrin sayını tənzimləmək nümunəsi:

[defaults]
forks = 20

Beləliklə, bir neçə hostda eyni vaxtda tapşırıqları başlatmaq üçün forks-u artırın və tək bir hostda paralel tapşırıqları yerinə yetirmək üçün asyncpoll istifadə edin.