Вот что я придумала:
- name: Get directory listing
find:
path: "{{ directory }}"
file_type: any
hidden: yes
register: directory_content_result
- name: Remove directory content
file:
path: "{{ item.path }}"
state: absent
with_items: "{{ directory_content_result.files }}"
loop_control:
label: "{{ item.path }}"
Во-первых, мы получаем список каталогов с findнастройкой
file_typeчтобы any, таким образом , мы бы не пропустить вложенные каталоги и ссылки
hidden в yes , таким образом , мы не пропустить скрытые файлы
- Кроме того, не устанавливайте
recurseв yes, так как это не только не нужно, но может увеличить время выполнения.
Затем мы проходим этот список с помощью fileмодуля. Его вывод немного многословен, поэтому loop_control.labelпоможет нам с ограничением вывода (наш совет был здесь ).
Но я обнаружил, что предыдущее решение было несколько медленным, поскольку оно перебирает содержимое, поэтому я пошел с:
- name: Get directory stats
stat:
path: "{{ directory }}"
register: directory_stat
- name: Delete directory
file:
path: "{{ directory }}"
state: absent
- name: Create directory
file:
path: "{{ directory }}"
state: directory
owner: "{{ directory_stat.stat.pw_name }}"
group: "{{ directory_stat.stat.gr_name }}"
mode: "{{ directory_stat.stat.mode }}"
- получить свойства каталога с помощью
stat
- удалить каталог
- воссоздать каталог с такими же свойствами.
Этого было достаточно для меня, но вы также можете добавить attributes, если хотите.