Type de problème : Rapport de bogue
Version Ansible : 1.9.4
Environnement : OSX 10.11.1
Résumé : L'utilisation de lookup
pour rendre un modèle qui est passé dans le paramètre uri
module body
ne fonctionne pas. Il renvoie une erreur TypeError: unhashable type
. J'ai ouvert une question StackOverflow à ce sujet et j'ai pensé qu'il était logique de la poster ici également.
Étapes à reproduire :
Exécutez cette tâche :
- 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) }}"
avec ceci en my.json.j2
:
{
"channel": "chatops",
"username": "Deploy",
"text": "TEST Deploy!",
"icon_emoji": ":ghost:"
}
Plier le JSON en une seule ligne dans le modèle a le même effet. Diriger la réponse lookup
via to_json
ne fonctionne pas non plus. Cependant, prendre le JSON plié et l'utiliser _directement_ dans le jeu fonctionne.
Résultat attendu : JSON approprié envoyé au point de terminaison
Résultat réel : erreur TypeError: unhashable type
; également, dans certaines circonstances, une erreur not valid JSON
est renvoyée par le point de terminaison, ce qui indique que les données ne sont pas envoyées correctement.
Salut!
Merci beaucoup de l'intérêt que vous portez à Ansible. Cela signifie sincèrement beaucoup pour nous.
Cela semble être une question d'utilisateur, et nous aimerions diriger ce genre de choses vers la liste de diffusion ou le canal IRC.
Si vous pouvez vous y arrêter, nous vous en serions reconnaissants. Cela nous permet de garder le suivi des problèmes pour les bogues, les demandes d'extraction, les RFE et autres.
Merci encore et au plaisir de vous voir sur la liste ou sur IRC. Merci!
Cela a été corrigé dans la version 2.0 : ajoutez simplement _body_format : json_ au module uri (et supprimez _convert_data=False_)
De plus, vous n'avez pas besoin de définir vous-même l'en-tête Content-Type lorsque vous définissez body_format sur json.
Salut, tout support concernant ce problème:
http://stackoverflow.com/questions/43117635/ansible-variable-not-rendered-inside-json-object
Commentaire le plus utile
Cela a été corrigé dans la version 2.0 : ajoutez simplement _body_format : json_ au module uri (et supprimez _convert_data=False_)
De plus, vous n'avez pas besoin de définir vous-même l'en-tête Content-Type lorsque vous définissez body_format sur json.