Ansible使用列表中的归档模块创建tar.gz

时间:2018-02-15 17:58:44

标签: ansible

我正在尝试在Ansible中查找超过一天的文件,然后创建这些文件的tar.gz,我尝试了archive模块,尽管它只创建了最后一个tar列表中的元素。有没有办法创建包含所有文件的tar.gz?

以下是我的剧本:

  - name: Check all files
    find: paths=/myfiles
          file_type=file
          age=1
          age_stamp=mtime
    register: files
    failed_when: files.matched < 10

  - name: Remove previous tarFile
    file: path=/tmp/test.tar.gz
          state=absent

  - name: compress all the files in tar.gz
    archive: path="{{ item.path }}"
             dest=/tmp/test.tar.gz
             format=gz
    with_items:
        "{{ files.files }}"

2 个答案:

答案 0 :(得分:2)

  

它只创建列表中最后一个元素的tar

它正在为循环中的每个文件创建和覆盖/tmp/test.tar.gz。检查时,只能看到最后一个。

如果查看archive module docs,您会看到:

  

path远程绝对路径,glob或路径列表或要压缩或归档的文件的整体。

因此,您可以提供文件列表作为path参数的值:

- name: compress all the files in tar.gz
  archive:
    path: "{{ files_to_archive }}"
    dest: /tmp/test.tar.gz
    format: gz
  vars:
    files_to_archive: "{{ files.files | map(attribute='path') | list }}"

答案 1 :(得分:0)

我使用以下方法创建了多个zip文件。

- name: 'Create zip archive of {{ date_input }} NMON HTML files'
  archive:
    path: /tmp/{{ inventory_hostname }}_*.html
    dest: /tmp/NMON-{{ inventory_hostname }}.zip
    format: zip
  when: option == "5"
  delegate_to: localhost