Isso é o que eu proponho:
- 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 }}"
Primeiro, estamos recebendo a listagem de diretórios com find
, definindo
file_type
para any
não perdermos diretórios e links aninhados
hidden
para yes
, para não pularmos arquivos ocultos
- Além disso, não defina
recurse
como yes
, pois não é apenas desnecessário, mas pode aumentar o tempo de execução.
Então, passamos por essa lista com o file
módulo. Sua saída é um pouco detalhada, por loop_control.label
isso nos ajudará a limitar a saída (encontrei este conselho aqui ).
Mas achei a solução anterior um pouco lenta, pois itera pelo conteúdo, então fui com:
- 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 }}"
- obter propriedades do diretório com o
stat
- excluir diretório
- recrie o diretório com as mesmas propriedades.
Isso foi o suficiente para mim, mas você pode adicionar attributes
também, se quiser.