Sobes.tech
Junior — Middle

¿Cómo se puede modernizar la ejecución de tareas en Ansible para ejecutarlas simultáneamente en múltiples hosts en lugar de hacerlo de forma secuencial?

sobes.tech AI

Respuesta de la IA

En Ansible, por defecto, las tareas se ejecutan en paralelo en varios hosts, pero dentro de un mismo host, se ejecutan de forma secuencial. Si deseas ejecutar varias tareas simultáneamente en un solo host, puedes usar el módulo async y el parámetro poll.

Ejemplo de ejecución asíncrona de una tarea:

- name: Ejecutar una tarea larga de forma asíncrona
  command: /path/to/long_task.sh
  async: 3600       # tiempo máximo de ejecución en segundos
  poll: 0           # no esperar a que termine la tarea

Esto permitirá iniciar la tarea y pasar inmediatamente a la siguiente, sin esperar a que finalice.

Si se trata de ejecutar tareas en paralelo en diferentes hosts, esto es comportamiento estándar de Ansible, que se puede configurar mediante el parámetro forks en la configuración, aumentando la cantidad de conexiones simultáneas.

Ejemplo de configuración del número de conexiones paralelas:

[defaults]
forks = 20

De esta forma, para ejecutar tareas en varios hosts simultáneamente, debes aumentar forks, y para ejecutar tareas en paralelo en un solo host, usa async y poll.