【发布时间】:2015-03-18 00:05:42
【问题描述】:
我正在尝试使用 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
【问题讨论】: