Ansible verifica si el valor existe en la lista del diccionario.
A continuación se muestra mi lista de variables.
hostlist:
- { name: 'host1', ip_addr: '192.168.2.31', hostgrp: 'physical_workstation' }
- { name: 'host2', ip_addr: '192.168.2.32', hostgrp: 'physical_workstation' }
- { name: 'host3', ip_addr: '192.168.2.33', hostgrp: 'virtual_machine' }
Intenté lo siguiente:
- name: Prueba condicional
debug:
msg: "Hola mundo"
when: hostlist|selectattr("name", "equalto", "host1")|list|length != 0
Esto no funciona y muestra el siguiente error:
El error fue: TemplateRuntimeError: no hay una prueba llamada 'equalto'
Hay una solución de actualizar Jinja2, pero ¿hay algún otro método en lugar de usar selectattr? Prefiero no actualizar Jinja2.
davy.ai
Sí, hay otro método para obtener la salida deseada sin usar
selectattr
.En su lugar, puedes usar el filtro
select
. Aquí tienes un ejemplo:Esto debería funcionar sin tener que actualizar Jinja2.