Creé https://github.com/eparis/ansible-inventory-bug para mostrar exactamente lo que quiero decir con un reproductor limpio que cualquiera puede ejecutar localmente. Tiene un inventario 'dinámico' y un inventario estático.
(Para 'dinámico' realmente es solo captura de algunos json, pero muestra el problema claramente)
Con un archivo de inventario estático when: inventory_hostname in {{ groups['group'] }}
funciona bien. Pero con el inventario dinámico falla con lo que parece un lío de localización / manejo de cadenas de Python ...
Así que experimenté mucho y encontré
Obras:
when: inventory_hostname in groups['group']
Falla:
when: inventory_hostname in {{ groups['group'] }}
Por tanto, es el conjunto adicional de {{}} el que causa el problema. Aunque no sé por qué funciona para estática pero no para dinámica.
No debe usar {{}} en cuando (en realidad deberíamos hacer que esto sea un error), la razón por la que el funcionamiento estático / dinámico aquí parece ser debido al tipo de objeto devuelto al final, lista frente a cadena unicode .
cerrando como arriba
Comentario más útil
Así que experimenté mucho y encontré
Obras:
when: inventory_hostname in groups['group']
Falla:
when: inventory_hostname in {{ groups['group'] }}
Por tanto, es el conjunto adicional de {{}} el que causa el problema. Aunque no sé por qué funciona para estática pero no para dinámica.