我正在尝试使用带有get_url模块的远程服务器使用HTTP下载受保护的文件,但用户名密码似乎未在请求中传递,因此任务失败。
我正在使用Ansible 1.9.2
这是我正在使用的get_url定义:
virtualenv
这是我得到的错误:
- name: Downloading Artifact
get_url:
url: "http://myserver/somefile.tar.gz"
dest: "/home/jdoe/somefile.tar.gz"
url_username: "jdoe"
url_password: "mysecret"
mode: 0600
现在,我尝试使用cURL下载该文件,它可以正常工作。
任何帮助都会受到赞赏,因为我已经为此困难了2天。
答案 0 :(得分:1)
您可以使用uri模块:
---
- hosts: hostname
tasks:
- name: "download file"
uri:
url: "http://somedomain.com/file.json"
method: GET
user: "{{ somedomain.user }}"
password: "{{ somedomain.password }}"
force_basic_auth: yes
dest: /tmp/somedomain.file.json
return_content: yes
如果这不起作用,可能会与httplib2库版本有关。
答案 1 :(得分:0)
问题是您的服务器没有返回401状态,因此httplib2库可以在之后通过BASIC身份验证凭据发送。解决方案是升级到ansible> = 2.0并使用force_basic_auth:True以便从一开始就使用BASIC身份验证凭据。
答案 2 :(得分:0)
我在 ansible 2.9 中遇到了类似的问题。 结果 curl 也得到了 HTTP 403,但仍然显示内容。 GET_URL 模块更严格。
对我来说,这个问题是通过从默认的 Apache 欢迎页面切换到定制的。