問題の種類:バグレポート
Ansibleバージョン: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をテンプレート内で1行に折りたたむと、同じ効果があります。 lookup
応答をto_json
介して配管することも機能しません。 ただし、折りたたまれたJSONを取得し、それを劇中で_直接_使用することは機能します。
期待される結果:適切なJSONがエンドポイントに送信されました
実際の結果: TypeError: unhashable type
エラー; また、特定の状況では、エンドポイントからnot valid JSON
エラーが返されます。これは、データが適切に送信されていないことを示します。
やあ!
Ansibleに関心をお寄せいただきありがとうございます。 それは私たちにとって心から多くのことを意味します。
これはユーザーの質問のようです。このようなことをメーリングリストまたはIRCチャネルに転送したいと思います。
よろしくお願いします。 これにより、バグ、プルリクエスト、RFEなどの課題追跡システムを維持できます。
改めて感謝いたします。リストまたはIRCでお会いできることを楽しみにしております。 ありがとう!
これは2.0で修正されました:uriモジュールに_body_format:json_を追加するだけです(そして_convert_data = False_を削除します)
また、body_formatをjsonに設定するときに、Content-Typeヘッダーを自分で設定する必要はありません。
最も参考になるコメント
これは2.0で修正されました:uriモジュールに_body_format:json_を追加するだけです(そして_convert_data = False_を削除します)
また、body_formatをjsonに設定するときに、Content-Typeヘッダーを自分で設定する必要はありません。