Los bucles son conjuntos de comandos o instrucciones que están establecidas para repetir un cierto número de veces según los requisitos del usuario. Los bucles permiten un mejor flujo de control en sus scripts y eliminan la redundancia general de ellos.
Ansible también viene con múltiples métodos de bucle de bloques de código. Esta guía está destinada a ayudarlo a aprender sobre bucles en Ansible. Cubriremos los conceptos básicos del bucle en Ansible, junto con la sintaxis y los ejemplos apropiados.
Dicho esto, echemos un vistazo a los bucles en Ansible.
Palabras clave para bucles en Ansible
Ansible usa las siguientes palabras clave para sus estructuras de bucle:
Como su nombre indica, "Loop" es el comando de ir a implementar bucles en bloques de código.
Similar a "bucle", tienes "with_". Este comando requiere que le proporcione un complemento de búsqueda. Se recomienda usar with_* en lugar de bucle cuando los complementos de búsqueda están involucrados.
"Hasta" le permite seguir ejecutando una tarea hasta que se cumpla la condición requerida. Es la condición más cercana a la condición "mientras" en el flujo de control.
Ahora que tiene una idea de las palabras clave para bucles, puede proceder a aprender sobre cómo implementarlas en código.
Bucles estándar en Ansible
Comenzaremos discutiendo cómo implementar bucles estándar en Ansible. Para los bucles estándar, usaremos la palabra clave "with_".
Este ejemplo demuestra cómo podemos usar bucles para agregar usuarios.
- Nombre: Agregar varios usuariosAhora, el siguiente paso sería ejecutar el libro de jugadas. Puede hacerlo con la ayuda del siguiente comando en el terminal de Linux:
Ansible-Playbook Testbook.YMLAquí, "Artículo" es el término de búsqueda. "With_item" tiene dos hosts, VM1 y VM2 respectivamente. El bucle hace lo mismo que el siguiente código:
- Nombre: Agregar usuario VM1Como puede ver, mediante el uso de "with_item", podemos eliminar la redundancia de nuestro código. Al agregar más usuarios en "with_items:", podemos agregar múltiples usuarios según sea necesario.
El siguiente ejemplo cubrirá cómo ejecutar bucles anidados en Ansible.
Bucles anidados en Ansible
Ansible le permite implementar bucles anidados en sus scripts. Un ejemplo de dicho bucle se da a continuación.
- Nombre: Proporciona a los usuarios acceso a bases de datosAlternativamente, puede escribir el mismo código con "bucle" de la siguiente manera:
- Nombre: Proporciona a los usuarios acceso a bases de datosLos usuarios recibirán acceso a todas las bases de datos una por una. Como se dijo anteriormente, es más fácil entender que el "with_" es mejor con los complementos de búsqueda en lugar de "bucle" como sintaxis.
Echemos un vistazo a otros ejemplos que destacan la capacidad de Ansible.
Usando Ansible para iterar sobre los hashes
Ansible le permite recurrir a una lista de hashes. Esto se puede ver desde el ejemplo que se da a continuación.
Supongamos que ha declarado una lista de usuarios de la siguiente manera.
Usuarios:Para imprimir todos los nombres y series, ejecute el script a continuación.
tareas:Esto imprimirá los nombres de usuario y las series respectivamente. Al agregar más usuarios en el panel "Usuarios:", puede imprimir más usuarios sin tener que volver a escribir el código.
Uso de bucles para conjuntos de datos paralelos
También puede usar bucles para conjuntos de datos paralelos. Esto se demuestra en el siguiente ejemplo:
Supongamos que tiene los siguientes datos:
alfabetos: ['a', 'b', 'c', 'd']Puede recorrer estos comandos de la siguiente manera:
tareas:El código anterior reunirá ambos conjuntos de datos como (a, 2), (b, 4), etc.
Bucles de elección al azar
Una de las características que vienen con los bucles "With_" es "Random_Choice".
Como su nombre indica, la función de elección aleatoria se usa para seleccionar elementos al azar de un conjunto dado de instrucciones.
Este ejemplo ilustra cómo hacer bucles para seleccionar una acción de una lista dada de cuerdas.
- depurar:Aquí, la cadena de "acción de ejecución" es arbitraria y se puede reemplazar con cualquier cosa. El comando with_random_choice se seleccionaría de la lista dada de acciones al azar.
Ejemplos de bucle "Hasta" hasta "
Esta sección de la guía será sobre la sintaxis del bucle "hasta".
Como se indicó anteriormente, el comando "hasta" repetirá un cierto conjunto de instrucciones hasta que cumpla con una cierta condición.
Aquí hay un ejemplo del bucle "hasta" en acción.
Shell:/usr/bin/fooEste es un ejemplo de un bucle recursivo. El bloque de código anterior continuará ejecutándose hasta que el shell reciba "todos los sistemas listos" como salida de texto. Si ese no es el caso, se detendrá después de funcionar 10 veces, ya que los reintentos especificados son "10".
El retraso corresponde al retraso en segundos. Por defecto, se establece en 5.
Conclusión
Esta fue una guía sobre cómo puede usar bucles en Ansible. Cubrimos los conceptos básicos de los bucles y su sintaxis en Ansible, y demostramos su uso a través de diferentes ejemplos. Con esto, esperamos que esté un paso más cerca de automatizar sus procesos utilizando Ansible.