Eu uso o filtro diferença para esse fim. Adicione uma tarefa para listar o conteúdo do seu diretório de configuração e registre o resultado em uma variável. Em seguida, adicione uma tarefa que remove itens inválidos do diretório de configuração encontrando a diferença entre sua lista de arquivos válidos e aqueles encontrados na etapa anterior:
- name: Get contents of config directory
command: ls "{{ remote_cfg_dir }}"
register: cfg_dir_contents
- name: Remove invalid files from config directory
file:
dest: "{{ remote_cfg_dir }}/{{ item }}"
state: absent
loop: "{{ cfg_dir_contents.stdout_lines | difference(sites_enabled) }}"
(assume que 'sites_enabled' é simplesmente uma lista de nomes de arquivos que devem existir em 'remote_cfg_dir')