Sobes.tech
Junior — Middle

Cum se poate moderniza executarea sarcinilor în Ansible pentru a le rula simultan pe mai multe gazde în loc de executarea lor secvențială?

sobes.tech AI

Răspuns de la AI

În Ansible, în mod implicit, sarcinile sunt executate în paralel pe mai multe gazde, dar în interiorul aceleiași gazde — secvențial. Dacă doriți să rulați mai multe sarcini simultan pe o singură gazdă, puteți folosi modulul async și parametrul poll.

Exemplu de pornire asincronă a unei sarcini:

- name: Porniți o sarcină lungă în mod asincron
  command: /path/to/long_task.sh
  async: 3600       # timpul maxim de execuție în secunde
  poll: 0           # nu așteptați finalizarea sarcinii

Acest lucru va permite să porniți sarcina și să treceți imediat la următoarea, fără a aștepta finalizarea acesteia.

Dacă vorbim despre executarea paralelă a sarcinilor pe diferite gazde, acesta este comportamentul standard al Ansible, care poate fi configurat prin parametrul forks în configurație, mărind numărul de conexiuni simultane.

Exemplu de configurare a numărului de conexiuni paralele:

[defaults]
forks = 20

Astfel, pentru a porni sarcini simultan pe mai multe gazde, creșteți forks, iar pentru executarea paralelă pe o singură gazdă — folosiți async și poll.