Ansible: No se puede renderizar JSON en Ansible y POST a través del módulo uri

Creado en 26 nov. 2015  ·  3Comentarios  ·  Fuente: ansible/ansible

Tipo de problema : Informe de error
Versión de Ansible : 1.9.4
Entorno : OSX 10.11.1

Resumen : Usar lookup para representar una plantilla que se pasa al parámetro uri módulo body no funciona. Lanza un error TypeError: unhashable type . Abrí una pregunta de StackOverflow sobre esto y pensé que tenía sentido publicarla aquí también.

Pasos para reproducir :

Ejecute esta tarea:

- 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) }}"

con esto en my.json.j2 :

{
  "channel": "chatops",
  "username": "Deploy",
  "text": "TEST Deploy!",
  "icon_emoji": ":ghost:"
}

Doblar el JSON en una sola línea dentro de la plantilla tiene el mismo efecto. Canalizar la respuesta lookup través de to_json tampoco funciona. Sin embargo, tomar el JSON plegado y usarlo _directamente_ en la obra funciona.

Resultado esperado : JSON adecuado enviado al punto final

Resultado real : TypeError: unhashable type error; Además, en determinadas circunstancias, el punto final devuelve not valid JSON error

Comentario más útil

Esto se solucionó en 2.0: simplemente agregue _body_format: json_ al módulo uri (y elimine _convert_data = False_)
Además, no tiene que configurar el encabezado Content-Type usted mismo al configurar body_format en json.

Todos 3 comentarios

Información de lista

¡Hola!

Muchas gracias por su interés en Ansible. Sinceramente, significa mucho para nosotros.

Esta parece ser una pregunta de usuario, y nos gustaría dirigir este tipo de cosas a la lista de correo o al canal de IRC.

Si puede pasar por allí, se lo agradeceríamos. Esto nos permite mantener el rastreador de problemas para errores, solicitudes de extracción, RFE y similares.

Gracias una vez más y esperamos verte en la lista o en el IRC. ¡Gracias!

Esto se solucionó en 2.0: simplemente agregue _body_format: json_ al módulo uri (y elimine _convert_data = False_)
Además, no tiene que configurar el encabezado Content-Type usted mismo al configurar body_format en json.

¿Fue útil esta página
0 / 5 - 0 calificaciones