Sobes.tech
Junior — Middle

Hoe kan de uitvoering van taken in Ansible worden gemoderniseerd om ze gelijktijdig op meerdere hosts uit te voeren in plaats van sequentieel?

sobes.tech AI

Antwoord van AI

In Ansible worden taken standaard parallel uitgevoerd op meerdere hosts, maar binnen één host worden ze sequentieel uitgevoerd. Als je meerdere taken gelijktijdig op één host wilt uitvoeren, kun je de module async en de parameter poll gebruiken.

Voorbeeld van het asynchroon starten van een taak:

- name: Start een lange taak asynchroon
  command: /path/to/long_task.sh
  async: 3600       # maximale uitvoeringstijd in seconden
  poll: 0           # wacht niet op voltooiing van de taak

Dit stelt je in staat om de taak te starten en meteen door te gaan naar de volgende, zonder te wachten tot deze klaar is.

Als het gaat om het gelijktijdig uitvoeren van taken op verschillende hosts, is dit standaard gedrag van Ansible, dat je kunt aanpassen via de parameter forks in de configuratie, door het aantal gelijktijdige verbindingen te verhogen.

Voorbeeld van het instellen van het aantal gelijktijdige verbindingen:

[defaults]
forks = 20

Zo moet je forks verhogen om taken gelijktijdig op meerdere hosts uit te voeren, en gebruik je async en poll voor parallelle uitvoering op één host.