Ich habe https://github.com/eparis/ansible-inventory-bug erstellt, um genau zu zeigen, was ich mit einem sauberen Reproduzierer meine, den jeder lokal ausführen kann. Es hat sowohl ein "dynamisches" Inventar als auch ein statisches Inventar.
(Für 'dynamisch' ist es wirklich nur das Einfangen von Json, aber es zeigt das Problem deutlich)
Mit einer statischen Inventardatei funktioniert when: inventory_hostname in {{ groups['group'] }}
einwandfrei. Aber mit dynamischem Inventar schlägt es fehl, was wie ein Durcheinander bei der Python-Lokalisierung / String-Behandlung aussieht ...
Also einfach viel experimentiert und gefunden
Funktioniert:
when: inventory_hostname in groups['group']
Fehler:
when: inventory_hostname in {{ groups['group'] }}
Es ist also der zusätzliche Satz von {{ }}, der das Problem verursacht. Obwohl ich nicht weiß, warum es für statisch funktioniert, aber nicht für dynamisch.
Sie sollten {{}} nicht verwenden, wenn (wir sollten dies eigentlich zu einem Fehler machen), der Grund dafür, dass die statische/dynamische Funktion hier etwas anders funktioniert, scheint der am Ende zurückgegebene Objekttyp zu sein, Liste vs. Unicode-String .
Schließung wie oben
Hilfreichster Kommentar
Also einfach viel experimentiert und gefunden
Funktioniert:
when: inventory_hostname in groups['group']
Fehler:
when: inventory_hostname in {{ groups['group'] }}
Es ist also der zusätzliche Satz von {{ }}, der das Problem verursacht. Obwohl ich nicht weiß, warum es für statisch funktioniert, aber nicht für dynamisch.