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.