Eso es lo que se me ocurre:
- 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 }}"
Primero, estamos obteniendo una lista de directorios con find, estableciendo
file_typea any, para que no nos perdamos los directorios y enlaces anidados
hiddena yes, para no omitir archivos ocultos
- También, no se ajusta
recursea yes, ya que no sólo es innecesario, pero puede aumentar el tiempo de ejecución.
Luego, revisamos esa lista con el filemódulo. Su salida es un poco detallada, por loop_control.labello que nos ayudará a limitar la salida (encontré este consejo aquí ).
Pero encontré que la solución anterior era algo lenta, ya que itera a través del contenido, así que seguí con:
- 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 }}"
- obtener propiedades de directorio con el
stat
- eliminar directorio
- recrear directorio con las mismas propiedades.
Eso fue suficiente para mí, pero también puede agregar attributes, si lo desea.