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_type
a any
, para que no nos perdamos los directorios y enlaces anidados
hidden
a yes
, para no omitir archivos ocultos
- También, no se ajusta
recurse
a yes
, ya que no sólo es innecesario, pero puede aumentar el tiempo de ejecución.
Luego, revisamos esa lista con el file
módulo. Su salida es un poco detallada, por loop_control.label
lo 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.