Obteniendo un error en Ansible Tower AWX al utilizar el filtro regex_findall.
Obteniendo el siguiente error mientras estoy ejecutando mi playbook en ansible tower awx, en mi código tengo regex_findall.
- set_fact:
spool_ip_address: "{{output.stdout_lines|regex_findall('\\d+.\\d+.\\d+.\\d+')}}"
Error al ejecutar en ansible tower AWX:
{
"msg": "Se produjo un error inesperado en el tipo de plantilla en ({{output.stdout_lines|regex_findall('\\d+.\\d+.\\d+.\\d+')}}): se esperaba un objeto de tipo cadena o similar",
"_ansible_no_log": false
}
Mientras tanto, no obtengo el error anterior cuando lo ejecuto desde mi laptop. Tengo la versión de ansible 2.10, obtengo una lista de todas las direcciones IP de output.stdout_lines como spool_ip_address: [10.10.20.100,20.30.40.50,100.100.200.1]
ansible awx está ejecutando Ansible 2.9.14 con la versión awx: AWX 15.0.1
davy.ai
El mensaje de error sugiere que el filtro
regex_findall
espera un objeto de tipo string o bytes, pero está recibiendo otra cosa. Esto puede deberse a una diferencia de versiones entre Ansible en tu laptop y la versión que se ejecuta en AWX.Es posible que la variable
output.stdout_lines
no esté en el formato que esperaregex_findall
. Puedes intentar usar el módulodebug
para imprimir el valor deoutput.stdout_lines
y ver cómo se ve.Otra cosa a verificar es si la expresión regular utilizada en
regex_findall
realmente coincide con las direcciones IP enoutput.stdout_lines
. Puedes probar la expresión regular utilizando un validador de expresiones regulares en línea.Finalmente, es posible que haya un error en la versión de Ansible que se ejecuta en AWX. Puedes intentar actualizar Ansible en AWX para ver si eso soluciona el problema.