Ansible: Kann JSON in Ansible und POST nicht über das uri-Modul rendern

Erstellt am 26. Nov. 2015  ·  3Kommentare  ·  Quelle: ansible/ansible

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.

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.

Alle 3 Kommentare

Listeninformationen

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.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen