如果不存在,我怎样才能下载文件?

时间:2017-05-17 12:04:20

标签: ansible

我需要从http://archive.apache.org/dist/cassandra/2.2.9/下载ansible tar并将其安装在多个服务器上。

我不想在每个主机上下载文件,而是想在playbook主机上下载该文件,然后将其复制到每个主机进行安装(以节省带宽)。

在我的测试中,我设法将tar从主机复制到服务器

- name: Copy Cassandra
  copy: 
    src: "{{item}}" 
    dest: "{{tmp_dir}}"
  with_items:
    - "{{cassandra_tar}}"

但是,在运行剧本之前,我已经手动将cassandra tar放在正确的位置。

我如何进行ansible检查该文件是否存在于playbook主机中,如果它不存在则只下载tar?

1 个答案:

答案 0 :(得分:1)

要在您的主机上下载,请指定delegate,例如:

- name: Download Cassandra
  become: no
  get_url:
    url: "http://archive.apache.org/dist/cassandra/{{cassandra_version}}/{{cassandra_tar}}"
    dest: /tmp
  delegate_to: 127.0.0.1

become: no将在主site.yaml中使用成为帐号,并导致ansible使用playbook用户将文件下载到主机。