https://github.com/eparis/ansible-inventory-bugを作成して、誰でもローカルで実行できるクリーンな再現機能の意味を正確に示しました。 「動的」インベントリと静的インベントリの両方があります。
(「動的」の場合、実際には一部のjsonに対応しているだけですが、問題が明確に示されています)
静的インベントリファイルを使用すると、 when: inventory_hostname in {{ groups['group'] }}
は問題なく機能します。 しかし、動的インベントリでは、Pythonのローカリゼーション/文字列処理の混乱のように見えて失敗します...
だからたくさんの実験をして見つけた
作品:
when: inventory_hostname in groups['group']
失敗:
when: inventory_hostname in {{ groups['group'] }}
したがって、問題を引き起こすのは{{}}の追加セットです。 静的では機能するが動的では機能しない理由はわかりませんが。
{{}}を使用しないでください(実際にはこれをエラーにする必要があります)。ここで静的/動的の動作が少し異なる理由は、最後に返されるオブジェクトのタイプ、リストとユニコード文字列が原因のようです。 。
上記のように閉じる
最も参考になるコメント
だからたくさんの実験をして見つけた
作品:
when: inventory_hostname in groups['group']
失敗:
when: inventory_hostname in {{ groups['group'] }}
したがって、問題を引き起こすのは{{}}の追加セットです。 静的では機能するが動的では機能しない理由はわかりませんが。