Ako modernizovať vykonávanie úloh v Ansible, aby sa spúšťali súčasne na viacerých hostiteľoch namiesto sekvenčného vykonávania?
sobes.tech AI
Odpoveď od AI
V Ansible sú úlohy predvolene vykonávané paralelne na viacerých hostiteľoch, ale vo vnútri jedného hostiteľa — sekvenčne. Ak chcete spúšťať viac úloh súčasne na jednom hostiteľovi, môžete použiť modul async a parameter poll.
Príklad asynchrónneho spustenia úlohy:
- name: Spustiť dlhú úlohu asynchrónne
command: /path/to/long_task.sh
async: 3600 # maximálny čas vykonávania v sekundách
poll: 0 # nečakať na dokončenie úlohy
Toto umožní spustiť úlohu a okamžite prejsť na ďalšiu, bez čakania na jej dokončenie.
Ak ide o paralelné vykonávanie úloh na rôznych hostiteľoch, je to štandardné správanie Ansible, ktoré je možné nakonfigurovať pomocou parametra forks v konfigurácii, zvyšujúc počet súčasných pripojení.
Príklad nastavenia počtu paralelných pripojení:
[defaults]
forks = 20
Takto, pre spustenie úloh súčasne na viacerých hostiteľoch, zvýšte forks, a pre paralelné spúšťanie úloh na jednom hostiteľovi — použite async a poll.