2017-01-23 2 views
0

У меня есть один блок Ansible, используя with_fileglob.Как использовать шаблон Ansible with_fileglob для исключения некоторых файлов?

Как я могу исключить файлы с именем, содержащим useless?

- set_fact: files:{{item}} 
    with_fileglob: 
    - "path/to/*.tar.gz | exclude "useless" 

Другим словом, я не хочу, чтобы имя файла с такой строкой «бесполезно».

Как я мог это реализовать?

ответ

1

Вот хороший Oneliner для вас:

- set_fact: 
    files: "{{ lookup('fileglob','path/to/*.tar.gz',wantlist=true) | reject('search','useless') | list }}" 
0

Насколько я знаю glob позволяет включать шаблоны; он позволяет исключить только некоторые символы, но не подстроки. Вы можете попробовать за исключением файлов, содержащих «бесполезный» с двумя шагами, как показано ниже, хотя он получает register и не fact

- name: retrieve list of files 
    command: ls {{ item }} 
    register: contents 
    with_fileglob: 
     - path/to/*.tar.gz 

    - name: list excluding useless 
    debug: msg="Useful file {{item.item}}" 
    with_items: "{{ contents.results }}" 
    when: "{{ item.stdout.find('useless')}} == -1"