Estoy intentando extraer las direcciones IP de los hosts que forman parte de dos grupos y usarlas en un archivo de configuración .xml.
El problema al que me enfrento aquí es el resultado generado por la expresión utilizada en la plantilla jinja. Lo que quiero lograr es un resultado como 10.3.5.1,10.3.5.2,10.3.5.2
pero en lugar de esto obtengo algo como [u'10.3.5.1],[u'10.3.5.2],[u'10.3.5.2]
.
Esta es la expresión utilizada en la plantilla jinja:
<member1>{{ (groups['group_one']+groups['group_two']) | map('extract',hostvars,'ansible_ip_addresses') | list | unique | join(',') }}</member1>
También probé algunos otros filtros pero no pude obtener el resultado esperado.
¿Qué filtros debo usar para esto? (No pude encontrar los correctos)
Respuesta1
ansible_ip_addresses
es una lista, por lo que tiene una lista (de hosts) con listas anidadas (con direcciones IP).
Probablemente quieras aplanarlo antes de aplicarlo unique
y join
:
{{ (groups['group_one']+groups['group_two']) | map('extract',hostvars,'ansible_ip_addresses') | list | sum(start=[]) | unique | join(',') }}
Esto creará una lista plana con una única dirección IP como elemento, luego tomará elementos únicos y los unirá con una coma.