我尝试使用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状态传递但它推送空文件而不是战争。我以为你可以使用src参数替换curl中的--upload-file标志(因为uri模块使用了文件模块中的所有参数),但显然情况并非如此。
有人可以指出我在这里做错了吗?
ansible version:1.8.4
答案 0 :(得分:1)
URI Module不会将src
作为参数。
尝试使用body参数确保
body="{{ lookup('file','/opt/someapp.war') }}