Problemtyp : Fehlerbericht
Ansible-Version : 1.9.4
Umgebung : OSX 10.11.1
Zusammenfassung : Die Verwendung von lookup
zum Rendern einer Vorlage, die an den body
Parameter des uri
Moduls übergeben wird, funktioniert nicht. Es wirft einen TypeError: unhashable type
Fehler. Ich habe eine StackOverflow-Frage dazu geöffnet und dachte, es wäre sinnvoll, sie auch hier zu posten.
Schritte zur Reproduktion :
Führen Sie diese Aufgabe aus:
- 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) }}"
damit in my.json.j2
:
{
"channel": "chatops",
"username": "Deploy",
"text": "TEST Deploy!",
"icon_emoji": ":ghost:"
}
Das Falten des JSON in eine einzelne Zeile innerhalb der Vorlage hat den gleichen Effekt. Das Weiterleiten der Antwort lookup
durch to_json
funktioniert ebenfalls nicht. Das gefaltete JSON zu nehmen und es _direkt_ im Spiel zu verwenden, funktioniert jedoch.
Erwartetes Ergebnis : richtiges JSON an Endpunkt gesendet
Tatsächliches Ergebnis : TypeError: unhashable type
Fehler; Außerdem wird unter bestimmten Umständen ein not valid JSON
Fehler vom Endpunkt zurückgegeben, der darauf hinweist, dass die Daten nicht ordnungsgemäß gesendet werden.
Hi!
Vielen Dank für Ihr Interesse an Ansible. Es bedeutet uns aufrichtig viel.
Dies scheint eine Benutzerfrage zu sein, und wir möchten diese Art von Dingen entweder an die Mailingliste oder den IRC-Kanal weiterleiten.
Wenn Sie dort vorbeischauen können, würden wir uns freuen. Dies ermöglicht es uns, den Issue Tracker für Bugs, Pull Requests, RFEs und dergleichen zu führen.
Nochmals vielen Dank und wir freuen uns, Sie auf der Liste oder im IRC zu sehen. Vielen Dank!
Dies wurde in 2.0 behoben: Fügen Sie einfach _body_format: json_ zum uri-Modul hinzu (und entfernen Sie _convert_data=False_)
Außerdem müssen Sie den Content-Type-Header nicht selbst festlegen, wenn Sie body_format auf json setzen.
Hallo, jeder Support zu diesem Problem:
http://stackoverflow.com/questions/43117635/ansible-variable-not-rendered-inside-json-object
Hilfreichster Kommentar
Dies wurde in 2.0 behoben: Fügen Sie einfach _body_format: json_ zum uri-Modul hinzu (und entfernen Sie _convert_data=False_)
Außerdem müssen Sie den Content-Type-Header nicht selbst festlegen, wenn Sie body_format auf json setzen.