register, bucles y control de errores

Volvemos a la carga con ansible, vamos a parte bucles con la construcción de playbooks, recoger el valores en una variable y el control de errores.

bucles

En esta parte vamos a utilizar un solo comando para ejecutar varias veces una misma tarea.

Para ello vamos a utilizar la expresión with_items, esto repetira una acción que le indiquemos tantas veces como contenga la lista o el diccionario indicada.

Un ejemplo seria instalar varios paquetes. Para ellos vamos a usar la variable {{ item }}para llamar al contenido de la lista definida en with_items.

En este caso vamos a instalar en localhost los paquetes tree y vim

Y nos mostraría esto:

Como veis a instalado los dos paquete en localhost con una sola tarea.

register

La expresión register nos permite guardar en una variable el resultado de una acción realizada en un módulo o una tarea.

Por ejemplo, si utilizamos la ejecución de un comando como puede ser uptime solo veriamos el resultado utilizando –vv en la ejecución en playbook, con register podemos guardar ese resultado en una variable, después podemos ejecutar una tarea para visualizar esa variable.

Quedando así:

Y lo que nos mostraría la ejecución de playbook seria esto:

Como vemos el muestra el resultado de la ejecución del comando uptime en localhost. Podemos definir algo más el resultado de esa visualización, en este caso vamos a definir que solo veamos la línea que tenemos de stdout. Para ello vamos a definir algo más la salida del register poniendo un punto y el nombre de la línea que queremos sacar.

Y el resultado que nos mostraría sería el siguiente:

Como veis, podemos definir el contenido dentro de esa variable para poder utilizarlo como nosotros queramos.

control de errores

Si habéis programado alguna vez, sabéis lo impórtate que es en alguna ocasión el control de errores en este caso vamos a ver lo que sería el ignore_errors, esto nos va a permitir ignorar una tarea marcada como error y que continúe con el resto de las tareas.

En este caso, vamos a ver el contenido un fichero en /home/existe/ llamado fichero.txt que no existe, nos va a saltar un error y no va a continuar con el playbook.

Al poner el ignore_errors continuaría con la ejecución de la siguiente tarea en este caso desinstalar los paquetes tree y vim

El resultado de la ejecución seria este:

Al no existir el fichero no ha podido ejecutar el comando que le pedimos, simplemente la ignora y continua con la siguiente tarea.

También podemos utilizar not existed: failed para que ejecute la tarea no ha fallado, es decir que el fichero existe y con la existed: failed se ejecutara cuando el fichero no exista.

Otras opciones de control de errores serian failed_when y changed_when. Esto nos van a permitir especificar las condiciones para que se ejecuten esa tarea o la ignore.

Voy a usar el ejemplo para failed_when, con la versión de Linux tengo que es una red hat y le voy a decir que salte la tarea si no es un debían en línea de stdout

Esta sería la salida de la ejecución de playbook

Nos lo marca como error porque no es un debían

Para utilizar el changed_when podemos utilizarlo para que nos muestre esa tarea como ok en vez de mostrar que esta cambiada.

Para explicároslos vamos a usar el ejemplo anterior.

Voy a poner la línea para que no de error cambiando debian por red hat. Y nos mostrara eso:

Ahora con esto, voy a añadir la línea de changed_when y ponerlo a false

Y nos mostrar que la tarea no está cambiado sino que esta ok

Con esta opción nunca será marcada como changed.

Todas estas opciones son muy útiles para trabajar con playbooks.

Como siempre espero que os sirva

Deja un comentario