get_url下载文件到远程节点模块
1. 概要
- 本模块是内置模块。
- 从 HTTP, HTTPS, or FTP等服务上面下载文件到远程主机,远程主机必须要能够直接访问对应的远程资源。
- 如果远程主机设置了
<protocol>_proxy环境变量,默认将请求发送到这些代理。你可以通过设置环境变量,或者使用use_proxy选项改变这种行为。 - HTTP重定向可以将
HTTP定向到HTTPS,你应明确你的代理环境和协议配置正确。 - 从Ansible 2.4开始,运行时使用
--check选项时,Ansible将向对应的URL发送一个HEAD请求,但并不下载整个文件,并且不会校验哈希值,并且会报告不正确的状态信息。 - 官方文档 https://docs.ansible.com/ansible/latest/collections/ansible/builtin/get_url_module.html
2. 参数
| 参数 | 描述 |
|---|---|
attributes string | 下载后的文件的文件属性,属性顺序应同lsattr展示的一样,默认使用=操作,如果要使用+或-操作则需要在字符串中说明 |
backup boolean | 是否备份文件,默认no |
checksum string | 校验文件,文件下载完成后校验其摘要的校验码是否与给定的相同 |
client_cert path | PEM格式的证书文件路径 |
client_key path | PEM格式的私有key文件路径 |
dest path/required | 下载的文件存放的绝对路径,如果是文件夹,文件夹必须存在 |
force boolean | 每次都下载并代理文件。通常只有要文件才设置为yes,默认no,即不强制下载 |
force_basic_auth boolean | 强制发送认证头,默认no不发送 |
group string | 下载文件的组属性,类似于chown操作 |
headers dictionary | 添加自定义header头部到请求中 |
http_agent string | 标识以识别AS,通常出现在Web服务器日志中。默认值ansible-httpget |
mode raw | 文件系统的权限模式 |
owner string | 文件的拥有者 |
| se* | selevel、serole、setype、seuser配置略,请参考官方文档 |
timeout integer | URL请求的超时秒数,默认10秒 |
tmp_dest path | 临时文件的绝对路径 |
unredirected_headers | 不进行重定向的请求头名称的列表 |
unsafe_writes boolean | 不安全写,默认no |
url string/required | 请求的URL,`HTTP, HTTPS, or FTP URL in the form (http |
url_password string | 认证时使用的用户密码 |
url_username string | 认证时使用的用户名 |
use_proxy boolean | 使用代理,默认yes |
validate_certs boolean | 是否验证SSL证书,默认yes,自签名证书时可以设置为no不验证 |
3. 官方示例
| |
4. 剧本的使用
我们参考官方示例,做以下任务:
- 尝试下载Getting started with Redis页面。
- 参考 https://github.com/redis/redis-hashes 下载redis-6.2.7.tar.gz源码,并进行哈希检验。
| |
编写剧本文件get_url.yml:
| |
语法检查并运行:
| |
此时,可以在节点上面查看刚才下载的文件:
| |
当我们尝试在任务Download redis source files将checksum参数最后的数字9改成其他的,如0,然后再次运行剧本,此时则会提示校验异常:
| |
也就是说,通过checksum的确是校验了需要下载的文件的散列值。
后面找机会再测试需要用户认证的文件下载。
