Você pode obter uma listagem do diretório desejado chamando o módulo file.find
e, como você tem uma lista dos arquivos que deseja gerenciar, é possível excluir os arquivos que não estão na lista de arquivos a serem gerenciados. .
Aqui está um código adaptado de um arquivo de estado que eu tive que gerenciar /etc/yum.repos.d. Eu vou assumir que seus arquivos para gerenciar são do pilar, e eles são chaves para um dict, com os valores sendo o resto dos dados que vão para renderizar o arquivo.
{% set site_dir = '/etc/nginx/sites-available/' %}
{% set sites = salt['pillar.get']('nginx_sites',{}) %}
{% set site_files = salt['file.find'](site_dir,type='f',print='name',maxdepth=0) %}
{% for site_file in site_files %}
{% if site_file not in sites %}
delete-old-{{ site_file }}:
file.absent:
- name: {{ site_dir }}/{{ site_file }}
{% endif %}
{% endfor %}
{# then go through the sites and manage the files... #}
{% for site in sites %}
manage-site-file-{{ site_file }}:
file.managed:
- name: {{ site_dir }}/{{ site }}
- source: salt://nginx/files/site-file.conf
- template: jinja
{% endfor %}