将get_url下载的zip文件作为变量传递给unarchive

时间:2018-04-12 09:03:41

标签: ansible

我刚开始使用Ansible来自动化二进制部署。

下载zip文件并尝试解压缩时,将下载的zip文件作为变量传递给解压缩/取消归档,但总是会抛出错误。

以下YML的片段:

- name: Download binaries
  get_url:
    url={{ download_server }}
    url_username={{ username }}
    url_password={{ passwd }}
    dest={{ base_dir }}
  register: bin_files

- set_fact:
  my_unzipped_file: "{{ bin_files[0].stdout }}"

- name: UNZIPPING the files
  unarchive: src={{ base_dir }}/{{ item }} dest={{ base_dir }} copy=no
  with_items: my_unzipped_file

1 个答案:

答案 0 :(得分:0)

如果它不是用户/通过受保护的网址,您可以删除“get_url”#39;模块并将URL放在Unarchive模块的src:中。

检查示例: http://docs.ansible.com/ansible/latest/modules/unarchive_module.html

另一种方法是将所有文件下载到目录{{bin_dir}}中,并在unarchive模块中使用' with_fileglob'解压缩所有 .zip / .tar.gz等

示例:

- name: UNZIPPING the files
  unarchive:
    src: "{{ item }}"
    dest: "{{ base_dir }}/"
    copy: no
  with_fileglob:
  - "{{ base_dir }}/*.zip"
  - "{{ base_dir }}/*.tar.gz"

另一个提示恕我直言你应该放弃' ='模块中的代码样式并转移到':'正如您在上面所看到的,它更具有人类可读性

你更正了SNIPPET:

- name: Download binaries
  get_url:
    url: {{ download_server }}
    url_username: {{ username }}
    url_passwor: {{ passwd }}
    dest: {{ base_dir }}
  register: bin_files

- name: UNZIPPING the files
  unarchive:
    src: {{ base_dir }}/{{ item }}
    dest: {{ base_dir }}
    copy: no
  with_items:
  - "{{ bin_files.stdout }}"