لقد أنشأت 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'] }}
لذا فإن مجموعة {{}} الإضافية هي التي تسبب المشكلة. على الرغم من أنني لا أعرف لماذا يعمل من أجل ثابت ولكن ليس ديناميكيًا.
لا يجب عليك استخدام {{}} عندما (يجب أن نجعل هذا خطأ بالفعل) ، يبدو أن السبب في أن الثابت / الديناميكي يعمل بشكل مختلف قليلاً هنا يرجع إلى نوع الكائن الذي تم إرجاعه في النهاية ، سلسلة list vs unicode .
إغلاق كما هو مذكور أعلاه
التعليق الأكثر فائدة
لذلك قمت بالكثير من التجارب ووجدت
يعمل:
when: inventory_hostname in groups['group']
فشل:
when: inventory_hostname in {{ groups['group'] }}
لذا فإن مجموعة {{}} الإضافية هي التي تسبب المشكلة. على الرغم من أنني لا أعرف لماذا يعمل من أجل ثابت ولكن ليس ديناميكيًا.