Sobes.tech
Junior — Middle

Come si può modernizzare l'esecuzione dei compiti in Ansible per eseguirli contemporaneamente su più host invece di eseguirli in sequenza?

sobes.tech AI

Risposta dell'AI

In Ansible, per impostazione predefinita, i compiti vengono eseguiti in parallelo su più host, ma all'interno di un singolo host, vengono eseguiti in modo sequenziale. Se desideri eseguire più compiti contemporaneamente su un singolo host, puoi usare il modulo async e il parametro poll.

Esempio di avvio asincrono di un compito:

- name: Avviare un compito lungo in modo asincrono
  command: /path/to/long_task.sh
  async: 3600       # tempo massimo di esecuzione in secondi
  poll: 0           # non aspettare il completamento del compito

Questo permette di avviare il compito e passare immediatamente al successivo, senza attendere che finisca.

Se si tratta di eseguire compiti in parallelo su diversi host, questo è il comportamento standard di Ansible, che può essere configurato tramite il parametro forks nella configurazione, aumentando il numero di connessioni simultanee.

Esempio di configurazione del numero di connessioni parallele:

[defaults]
forks = 20

In questo modo, per eseguire compiti contemporaneamente su più host, aumenta forks, e per eseguire compiti in parallelo su un singolo host, usa async e poll.