我试图运行下面的代码,寻找在给定的url中不存在的myfile.JAR文件。我希望这个任务失败,不下载任何文件。
- name: Download using URI
uri:
url: "http://1.2.3.4:8081/myurl/myfile.JAR"
dest: ./
method: GET
status_code: [200]
任务失败了,但在.下有一个1K大小的myfile.JAR文件。
为什么下载这个文件(真实大小是20MB)
稍微修改一下你的playbook
---
- hosts: localhost
connection: local
gather_facts: False
tasks:
- name: Download using URI
uri:
url: "http://www/myurl/myfile.JAR"
dest: ./uri.jar
ignore_errors: yes
- name: Download using GET_URL
get_url:
url: "http://www/myurl/myfile.JAR"
dest: ./get_url.jar
ignore_errors: yes
结果如下。
uri
下载文件,即webserver的html错误信息内容。get_url
不下载任何不存在的内容为什么?
get_url
是专门用于下载给定url的内容。如果http状态码不是200,那么什么都不会下载,这意味着如果文件在远程服务器上不存在,任务就会失败。
uri
另一方面是用于与web服务交互,如REST或SOAP或其他什么。当一个restful请求失败时,http状态码为 400
例如,附加信息可以在响应的主体中传输。例子见 https:/praveer09.github.iotechnology20160707rest-error-respon-boot的响应 而这些内容恰恰是通过下载 uri
任务。保存的结果可以由进一步的任务来处理。