Cómo acelerar un libro de jugadas de Ansible

Ansible es una herramienta de automatización de TI de código abierto para implementaciones continuas o actualizaciones continuas sin tiempo de inactividad, implementación de software, administración de configuración y orquestación de tareas de TI más avanzadas. Ansible minimiza las cargas de trabajo y ahorra mucho tiempo durante la configuración del servidor y la implementación de aplicaciones.

En algunos escenarios, tenemos que mantener una gran cantidad de servidores a la vez, luego, al ejecutar el libro de jugadas ansible, puede llevar más tiempo terminar las tareas del libro de jugadas. De acuerdo con la documentación oficial de Ansible, podemos acelerar la velocidad de su libro de jugadas utilizando varios métodos que discutiremos en este artículo. Usando estos métodos podemos reducir la enorme proporción de su consumo de tiempo real cambiando la configuración ansible.

Canalización

La canalización reemplaza el modo acelerado que se usaba en la versión anterior de ansible, lo que ayuda a acelerar la conexión ssh en el host dedicado. Ansible inicia muchas conexiones ssh para realizar cada tarea del libro de jugadas, lo que puede aumentar el consumo de tiempo total. La canalización está deshabilitada de forma predeterminada, por lo que cuando la canalización está habilitada, muchos módulos de Ansible se ejecutan sin una transferencia de archivos real, lo que reduce la cantidad de conexiones ssh necesarias. El canal STDIN se utiliza para pasar la instrucción al host conocido durante la ejecución del módulo.

Debe establecer el valor de canalización en verdadero para habilitar la canalización en el archivo ansible.cfg.

Estrategia libre

Ansible siempre ejecuta el libro de jugadas en estrategias lineales, que es uno de los flujos de trabajo del libro de jugadas. Durante la estrategia lineal, cada tarea en el libro de jugadas solo se inicia después de que cada anfitrión termina la tarea en particular, lo que requiere mucho tiempo.

Usando una estrategia gratuita, todos los hosts serán independientes entre sí, donde las tareas en cada host continuarán sin esperar a que otro host complete la tarea. Esto ayuda a reducir el tiempo de espera para completar la tarea en todos los hosts dedicados. Para anular la estrategia predeterminada, establezca la estrategia en libre en el archivo YAML de su libro de jugadas.

Aumentar el número de horquillas

Las bifurcaciones se utilizan en hosts remotos donde se ejecuta una cantidad específica de procesos paralelos proporcionados por la configuración predeterminada al comunicarse con hosts remotos. Fork determina la cantidad de hosts que se configurarán a la vez, el valor predeterminado es 5. Cuanto mayor sea el número de fork, más rápido podrá finalizar la tarea si tiene una gran cantidad de hosts remotos. Podemos limitar el valor de la bifurcación de acuerdo con las capacidades de su máquina de control, como la memoria disponible y el ancho de banda de la red.

Puede anular el valor predeterminado cambiando el valor de la bifurcación en el archivo ansible.cfg de la siguiente manera. En mi caso, establecí el valor de la bifurcación en 20.

Aumentar el número de bifurcaciones en Ansible

Desactivar la recopilación de datos

Cuando ejecutamos el ansible-playbook, el ansible recopila información diferente sobre el host, como la conectividad de red, información del dispositivo, información del sistema, etc., y la almacena en la memoria caché local de la máquina de control. Si está trabajando en una gran cantidad de hosts remotos, deshabilitar la recopilación de datos le ahorrará mucho tiempo siempre que no los necesite. No puede deshabilitar la recopilación de datos si ha utilizado la variable ansible en el libro de jugadas.

Deshabilitar la recopilación de datos en Ansible

Conclusión

Ansible es una de las mejores herramientas de automatización, pero es aún mejor cuando tiene mayor velocidad. Este artículo muestra cómo podemos aumentar la velocidad del libro de jugadas ansible, lo que ayuda a acelerar la configuración e implementación del servidor de una manera simple y eficiente.