Rest 将curl转换为ansible uri模块

Rest 将curl转换为ansible uri模块,rest,curl,ansible,Rest,Curl,Ansible,我正试图通过PUT REST调用将war文件远程部署到tomcat管理器。我已经能够通过curl实现这一点,但我希望遵循ansible最佳实践,并在我的剧本中使用uri模块 下面是有效的curl命令。我正在我的工作站上运行: curl -k -X PUT -u $TOMCAT_USER:$TOMCAT_PW --upload-file someapp.war "https://$SERVER:8443/manager/text/deploy?path=/someapp&update=tr

我正试图通过PUT REST调用将war文件远程部署到tomcat管理器。我已经能够通过curl实现这一点,但我希望遵循ansible最佳实践,并在我的剧本中使用uri模块

下面是有效的curl命令。我正在我的工作站上运行:

curl -k -X PUT -u $TOMCAT_USER:$TOMCAT_PW --upload-file someapp.war "https://$SERVER:8443/manager/text/deploy?path=/someapp&update=true"
- name: Push war to Tomcat manager
  uri:
    url: "https://{{ inventory_hostname }}:8443/manager/text/deploy?path=/someapp&update=true"
    src: /opt/someapp.war
    user: "{{ tomcat_manager_username }}"
    password: "{{ tomcat_manager_password }}"
    force_basic_auth: yes
    method: PUT
  delegate_to: 127.0.0.1
下面是我尝试完成的一项任务,以实现同样的目标(也在我的工作站上运行此任务):

ansible任务以OK状态通过,但它正在推送一个空文件,而不是war。我认为可以使用src参数替换curl中的--upload file标志(因为uri模块使用文件模块中的所有参数),但显然不是这样

有人能指出我做错了什么吗

ansible版本:1.8.4

不将
src
作为参数

尝试使用body参数,确保
body=“{{lookup('file','/opt/someapp.war')}

它接受文件模块的所有参数,但我认为它对这些参数没有任何作用。尝试使用body,但在查找过程中出现了
意外错误:“utf8”编解码器无法解码位置10中的字节0xf5:无效的起始字节
我非常确定无法上载URI模块的二进制文件。我最后只使用了curl命令与shell模块一起使用。@KyleFrank正在努力解决完全相同的问题,我现在得出了相同的结论:(Ansible目前不支持二进制文件上载。)