我刚开始使用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
答案 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 }}"