ansible下载文件的多种方式

对于ansible来说,下载文件是一个很重要的课题,这是build或者deploy的第一步,通常来讲由于不同项目的差异,可能我们的代码包或者资源文件保存在于http,github,nexus,ftp,nas等等。

http文件下载,前提是http允许匿名用户下载

1
2
3
4
5
6
7
- name: download war file
get_url:
url: "{{ https_url }}/start.war"
dest: /tmp
mode: 0644
force: yes
validate_certs: no

github 文件下载,前提是已经在github申请了token

1
2
3
4
5
6
7
8
9
- name: donwload docker rpm
get_url:
validate_certs: no
url: https://github.com/raw/org_name/project/master/docker.rpm
dest: /tmp/docker.rpm
mode: 0755
force: yes
headers:
Authorization: token xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

如果想让文件下载到ansible master端,只要增加一条

delegate_to: localhost

  • 一个完整的task,如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    - name: donwload docker rpm
    get_url:
    validate_certs: no
    url: https://github.com/raw/org_name/project/master/docker.rpm
    dest: /tmp/docker.rpm
    mode: 0755
    force: yes
    headers:
    Authorization: token xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
    delegate_to: localhost