community.general.filetree – recursively match all files in a directory tree
Note
This plugin is part of the community.general collection (version 2.0.1).
To install it use: ansible-galaxy collection install community.general.
To use it in a playbook, specify: community.general.filetree.
Synopsis
- This lookup enables you to template a complete tree of files on a target system while retaining permissions and ownership.
 - Supports directories, files and symlinks, including SELinux and other file properties.
 - If you provide more than one path, it will implement a first_found logic, and will not process entries it already processed in previous paths. This enables merging different trees in order of importance, or add role_vars to specific paths to influence different instances of the same role.
 
Parameters
| Parameter | Choices/Defaults | Configuration | Comments | 
|---|---|---|---|
|   _terms    string / required    |    path(s) of files to read   |  
Examples
- name: Create directories
  ansible.builtin.file:
    path: /web/{{ item.path }}
    state: directory
    mode: '{{ item.mode }}'
  with_community.general.filetree: web/
  when: item.state == 'directory'
- name: Template files (explicitly skip directories in order to use the 'src' attribute)
  ansible.builtin.template:
    src: '{{ item.src }}'
    dest: /web/{{ item.path }}
    mode: '{{ item.mode }}'
  with_community.general.filetree: web/
  when: item.state == 'file'
- name: Recreate symlinks
  ansible.builtin.file:
    src: '{{ item.src }}'
    dest: /web/{{ item.path }}
    state: link
    force: yes
    mode: '{{ item.mode }}'
  with_community.general.filetree: web/
  when: item.state == 'link'
- name: list all files under web/
  ansible.builtin.debug:
    msg: "{{ lookup('community.general.filetree', 'web/') }}"
   Return Values
Common return values are documented here, the following are the fields unique to this lookup:
| Key | Returned | Description | |
|---|---|---|---|
|   _raw    list / elements=dictionary    |  success |   List of dictionaries with file information.   |  |
|   ctime    float    |  success |   Time of last metadata update or creation (depends on OS).   |  |
|   gid    integer    |  success |   Group ID of the file/directory.   |  |
|   group    any    |  success |   Name of the group that owns the file/directory.   |  |
|   mode    string    |  success |   The permissions the resulting file or directory.   |  |
|   mtime    float    |  success |   Time of last modification.   |  |
|   owner    any    |  success |   Name of the user that owns the file/directory.   |  |
|   path    path    |  success |   Contains the relative path to root.   |  |
|   root    path    |  success |   Allows filtering by original location.   |  |
|   selevel    any    |  success |   The level part of the SELinux file context.   |  |
|   serole    any    |  success |   The role part of the SELinux file context.   |  |
|   setype    any    |  success |   The type part of the SELinux file context.   |  |
|   seuser    any    |  success |   The user part of the SELinux file context.   |  |
|   size    integer    |  success |   Size of the target.   |  |
|   src    path    |  success |   Full path to file.  Not returned when item.state is set to   directory. |  |
|   state    string    |  success |   TODO   |  |
|   uid    integer    |  success |   Owner ID of the file/directory.   |  |
Authors
- Dag Wieers (@dagwieers) <dag@wieers.com>
 
    © 2012–2018 Michael DeHaan
© 2018–2021 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
    https://docs.ansible.com/ansible/2.11/collections/community/general/filetree_lookup.html