ansible常用模块之 -- get_url模块 – 从HTTP / HTTPS / FTP下载文件到节点
- get_url模块 – 从HTTP / HTTPS / FTP下载文件到节点
- 一、摘要
- 二、参数
- 三、示例
get_url模块 – 从HTTP / HTTPS / FTP下载文件到节点
一、摘要
- 从HTTP、HTTPS或FTP下载文件到远程服务器。远程服务器必须直接访问远程资源
- 默认情况下,如果在目标主机上设置了环境变量_proxy,则将通过该代理发送请求。可以通过为该任务设置一个变量(参见设置环境)或使用use_proxy选项来覆盖此行为。
- HTTP重定向可以从HTTP重定向到HTTPS,因此应该确保这两个协议的代理环境都是正确的。
- 在Ansible 2.4中,当使用——check运行时,它会执行一个HEAD请求来验证URL,但不会下载整个文件或根据哈希值验证它。
- 对于Windows目标,使用win_get_url模块代替。
二、参数
参数 | 选项/默认值 | 描述 |
attributes string | 生成的文件或目录应该具有的属性。 要获得支持的标志,请查看目标系统上的chatr手册页。 该字符串应该包含与lsattr显示的相同顺序的属性。 =操作符为默认值,否则需要在字符串中包含+或-操作符。 | |
backup boolean | · no ← · yes | 创建一个包含时间戳信息的备份文件,以便在不正确地损坏原始文件时可以恢复原始文件。 |
checksum string | Default:“” | 如果将校验和传递给此参数,则将在下载目标文件后计算其摘要,以确保其完整性并验证传输成功完成。格式:< algorithm>:<checksum|url>,例如checksum="sha256:D98291AC[…]B6DC7B97”,checksum= " sha256: http://example.com/path/sha256sum.txt” 如果担心可移植性,那么在所有平台和python版本上只有sha1算法可用。 可以安装第三方hashlib库以访问其他算法。 此外,如果将校验和传递给该参数,且文件存在于最末端位置下,则将计算destination_checksum,如果校验和等于destination_checksum,则将跳过文件下载(除非force为true)。如果校验和不等于destination_checksum,则删除目标文件。 |
client_cert path | PEM格式的证书链文件,用于SSL客户端认证。 该文件还可以包含密钥,如果包含密钥,则不需要client_key。 | |
client_key path | PEM格式的文件,其中包含用于SSL客户端身份验证的私钥。 如果client_cert同时包含证书和密钥,则不需要此选项。 | |
dest path required | 下载文件的绝对路径。 如果dest是一个目录,则使用服务器提供的文件名,如果没有提供,则使用远程服务器上URL的基名称。如果是目录,强制不起作用。 如果dest是一个目录,文件将始终被下载(不管force选项),但只有在内容发生更改时才会被替换。 | |
force boolean | · no ← · yes | 如果 yes 并且 dest 不是一个目录,将每次下载该文件,并在内容更改时替换该文件。如果不存在,则只有在目标文件不存在的情况下才会下载该文件。通常只对小的本地文件应该是yes。 在0.6之前,这个模块的行为就像yes是默认值一样。 |
force_basic_auth boolean | · no ← · yes | 强制在初始请求时发送基本身份验证头。 Httplib2, uri模块使用的库只在webservice响应一个401状态的初始请求时发送身份验证信息。因为一些基本的认证服务不会正确地发送401,所以登录会失败。 |
group string | 应该拥有该文件/目录的组的名称,将提供给chown。 | |
headers raw | 以hash/dict格式向请求添加自定义HTTP标头。 哈希/字典格式在Ansible 2.6中添加, | |
http_agent string | Default:“ansible-httpget” | 头标识为,一般出现在web服务器日志中 |
mode string | 生成的文件或目录应该具有的权限。 对于那些习惯了/usr/bin/chmod的人来说,记住模式实际上是八进制数。你必须添加一个前导零,这样Ansible的YAML解析器就知道这是一个八进制数(比如0644或01777),或者引用它(比如’644’或’1777’),这样Ansible就可以接收到一个字符串,并可以进行自己的从字符串到数字的转换。 给Ansible一个不遵循这些规则的数字将会得到一个十进制数,这将会产生意想不到的结果。 从Ansible 1.8开始,模式可以指定为符号模式(例如,u+rwx或u=rw,g=r,o=r)。 | |
owner string | 应该拥有该文件/目录的用户名,将提供给chown。 | |
selevel string | Default:“s0” | SELinux文件上下文的level部分。 这是MLS/MCS属性,有时称为范围。 当设置为_default时,它将使用策略的级别部分(如果可用的话)。 |
serole string | SELinux文件上下文的角色部分。 当设置为_default时,它将使用策略的角色部分(如果可用的话)。 | |
setype string | SELinux文件上下文的类型部分。 当设置为_default时,它将使用策略的类型部分(如果可用的话)。 | |
seuser string | SELinux文件上下文的用户部分。 默认情况下,它使用系统策略。 当设置为_default时,它将使用策略的用户部分(如果可用的话)。 | |
sha256sum | Default:“” | 如果将SHA-256校验和传递给该参数,目标文件的摘要将在下载后计算,以确保其完整性并验证传输成功完成。此选项已弃用。使用checksum 。 |
timeout integer | Default:10 | URL请求的超时时间,以秒为单位。 |
tmp_dest path | 下载临时文件的绝对路径。 当在Ansible 2.5或更高版本上运行时,path默认为Ansible的remote_tmp设置 当在2.5之前的Ansible上运行时,它默认为TMPDIR、TEMP或TMP环境变量或平台特定的值。 | |
unsafe_writes boolean | · no ← · yes | 影响何时使用原子操作以防止数据损坏或从目标文件读取不一致。 默认情况下,该模块使用原子操作来防止数据损坏或从目标文件读取不一致,但有时系统的配置或破坏会防止这种情况发生。一个例子是docker装载的文件,它不能从容器内部原子地更新,只能以不安全的方式写入。 这个选项允许Ansible在原子操作失败时使用不安全的方法更新文件(然而,它并不强制Ansible执行不安全的写操作)。 重要!不安全的写操作会受到竞争条件的影响,并可能导致数据损坏。 |
url string required | 表单中的HTTP、HTTPS或FTP URL | |
url_password string | 用于HTTP基本身份验证的密码。 如果不指定url_username参数,则不使用url_password参数。 从2.8版开始,您还可以为该选项使用’password’别名。 | |
url_username string | 用于HTTP基本身份验证的用户名。 对于允许空密码的站点,可以在不使用url_password的情况下使用此参数。 从2.8版开始,您还可以为该选项使用用户名别名。 | |
use_proxy boolean | · yes ← · no | 如果no,它将不使用代理,即使在目标主机上的环境变量中定义了代理。 |
validate_certs boolean | · yes ← · no | 如果 no,将不验证SSL证书。 这应该只在使用自签名证书的个人控制网站上使用。 |
三、示例
# 下载foo.conf
- name: Download foo.conf
get_url:
url: http://example.com/path/file.conf
dest: /etc/foo.conf
mode: '0440'
# 下载文件并强制基本认证
- name: Download file and force basic auth
get_url:
url: http://example.com/path/file.conf
dest: /etc/foo.conf
force_basic_auth: yes
# 下载带有自定义HTTP标头的文件
- name: Download file with custom HTTP headers
get_url:
url: http://example.com/path/file.conf
dest: /etc/foo.conf
headers:
key1: one
key2: two
# 下载校验文件(sha256)
- name: Download file with check (sha256)
get_url:
url: http://example.com/path/file.conf
dest: /etc/foo.conf
checksum: sha256:b5bb9d8014a0f9b1d61e21e796d78dccdf1352f23cd32812f4850b878ae4944c
# 下载校验(md5)文件
- name: Download file with check (md5)
get_url:
url: http://example.com/path/file.conf
dest: /etc/foo.conf
checksum: md5:66dffb5228a211e61d6d7ef4a86f5758
# 下载带有校验和url的文件(sha256)
- name: Download file with checksum url (sha256)
get_url:
url: http://example.com/path/file.conf
dest: /etc/foo.conf
checksum: sha256:http://example.com/path/sha256sum.txt
# 从文件路径下载文件
- name: Download file from a file path
get_url:
url: file:///tmp/afile.txt
dest: /tmp/afilecopy.txt
# 获取需要认证的文件。用户名/密码仅从2.8开始可用,在旧版本中需要使用url_username/url_password
- name: < Fetch file that requires authentication.
username/password only available since 2.8, in older versions you need to use url_username/url_password
get_url:
url: http://example.com/path/file.conf
dest: /etc/foo.conf
username: bar
password: '{{ mysecret }}'
官方文档:https://docs.ansible.com/ansible/2.9/modules/get_url_module.html#get-url-module