Tipo de problema : relatório de bug
Versão Ansible : 1.9.4
Ambiente : OSX 10.11.1
Resumo : Usar lookup
para renderizar um modelo que é passado para o parâmetro uri
módulo body
não funciona. Ele lança um erro de TypeError: unhashable type
. Abri uma pergunta StackOverflow sobre isso e achei que faria sentido postá-la aqui também.
Passos para reproduzir :
Execute esta tarefa:
- 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) }}"
com isso em my.json.j2
:
{
"channel": "chatops",
"username": "Deploy",
"text": "TEST Deploy!",
"icon_emoji": ":ghost:"
}
Dobrar o JSON em uma única linha dentro do modelo tem o mesmo efeito. Canalizar a resposta lookup
por meio de to_json
também não funciona. Pegar o JSON dobrado e usá-lo _diretamente_ na peça funciona, no entanto.
Resultado esperado : JSON adequado enviado ao endpoint
Resultado real : TypeError: unhashable type
erro; também, em certas circunstâncias, um erro not valid JSON
é retornado pelo endpoint, o que indica que os dados não estão sendo enviados corretamente.
Oi!
Muito obrigado pelo seu interesse no Ansible. Sinceramente, significa muito para nós.
Esta parece ser uma pergunta do usuário, e gostaríamos de direcionar esse tipo de coisa para a lista de discussão ou para o canal IRC.
Se você puder passar por aí, nós agradeceríamos. Isso nos permite manter o rastreador de problemas para bugs, solicitações de pull, RFEs e similares.
Obrigado mais uma vez e esperamos vê-lo na lista ou IRC. Obrigado!
Isso foi corrigido no 2.0: basta adicionar _body_format: json_ ao módulo uri (e remover _convert_data = False_)
Além disso, você não precisa definir o cabeçalho Content-Type ao definir body_format para json.
Olá, qualquer suporte em relação a este problema:
http://stackoverflow.com/questions/43117635/ansible-variable-not-rendered-inside-json-object
Comentários muito úteis
Isso foi corrigido no 2.0: basta adicionar _body_format: json_ ao módulo uri (e remover _convert_data = False_)
Além disso, você não precisa definir o cabeçalho Content-Type ao definir body_format para json.