ansible常用模块之 -- get_url模块 – 从HTTP / HTTPS / FTP下载文件到节点

ansible常用模块之 -- 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时,它将使用策略的用户部分(如果可用的话)。
sha256sumDefault:“”如果将SHA-256校验和传递给该参数,目标文件的摘要将在下载后计算,以确保其完整性并验证传输成功完成。此选项已弃用。使用checksum 。
timeout
integer
Default:10URL请求的超时时间,以秒为单位。
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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值