نوع المشكلة : تقرير الشوائب
الإصدار أنسبل : 1.9.4
البيئة : OSX 10.11.1
الملخص : استخدام lookup
لتصيير قالب يتم تمريره إلى المعلمة uri
للوحدة النمطية body
لا يعمل. يؤدي إلى ظهور خطأ TypeError: unhashable type
. فتحت سؤال StackOverflow حول هذا الموضوع ، واعتقدت أنه من المنطقي نشره هنا أيضًا.
خطوات الاستنساخ :
قم بتشغيل هذه المهمة:
- name: Post
uri:
url: https://hooks.slack.com/endpoint
method: POST
return_content: no
HEADER_Content-Type: "application/json"
body: "{{ lookup('template', '../templates/my.json.j2', convert_data=False) }}"
مع هذا my.json.j2
:
{
"channel": "chatops",
"username": "Deploy",
"text": "TEST Deploy!",
"icon_emoji": ":ghost:"
}
إن طي JSON في سطر واحد داخل القالب له نفس التأثير. كما أن تمرير استجابة lookup
عبر to_json
لا يعمل أيضًا. ومع ذلك ، فإن أخذ JSON المطوي واستخدامه _ مباشرة_ في المسرحية ينجح.
النتيجة المتوقعة : تم إرسال JSON المناسب إلى نقطة النهاية
النتيجة الفعلية : TypeError: unhashable type
error؛ أيضًا ، في ظروف معينة ، يتم إرجاع الخطأ not valid JSON
خلال نقطة النهاية ، مما يشير إلى أن البيانات لا يتم إرسالها بشكل صحيح.
أهلا!
شكرا جزيلا لاهتمامك في أنسيبل. إنه يعني الكثير بالنسبة لنا بصدق.
يبدو أن هذا سؤال مستخدم ، ونود توجيه هذه الأنواع من الأشياء إما إلى القائمة البريدية أو قناة IRC.
إذا كان بإمكانك التوقف عند هذا الحد ، فنحن نقدر ذلك. يتيح لنا ذلك الاحتفاظ بمتعقب المشكلات بحثًا عن الأخطاء وطلبات السحب و RFEs وما شابه ذلك.
شكرًا لك مرة أخرى ونتطلع إلى رؤيتك في القائمة أو IRC. شكرا!
تم إصلاح هذا في 2.0: فقط أضف _body_format: json_ إلى وحدة uri (وقم بإزالة _convert_data = False_)
أيضًا ، لا يتعين عليك تعيين رأس نوع المحتوى بنفسك عند تعيين body_format على json.
مرحبًا ، أي دعم بخصوص هذه المشكلة:
http://stackoverflow.com/questions/43117635/ansible-variable-not-rendered-inside-json-object
التعليق الأكثر فائدة
تم إصلاح هذا في 2.0: فقط أضف _body_format: json_ إلى وحدة uri (وقم بإزالة _convert_data = False_)
أيضًا ، لا يتعين عليك تعيين رأس نوع المحتوى بنفسك عند تعيين body_format على json.