From ff9a5b38f83cc8ec866d421aba2fdccf63c770a5 Mon Sep 17 00:00:00 2001 From: Tristan Charbonneau Date: Fri, 26 Jun 2020 11:13:00 +0200 Subject: [PATCH] feat(vhosts): Better cleanup solution Sometimes, the cleanup process happend AFTER vhosts are installed, which resulted in no vhost declared. Parsing declared vhosts in pillar and comparing to present files on the server allows to remove only unwanted files. Plus, files are kept in sites-available, and removed only in sites-enabled. --- nginx/servers_config.sls | 22 ++++++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/nginx/servers_config.sls b/nginx/servers_config.sls index 66dd7d7c..dc57fe93 100644 --- a/nginx/servers_config.sls +++ b/nginx/servers_config.sls @@ -83,7 +83,6 @@ nginx_server_enabled_dir: file.directory: {{ sls_block(nginx.servers.dir_opts) }} - name: {{ nginx.lookup.server_enabled }} - - clean: {{ nginx.servers.purge_servers_config }} # If enabled and available are not the same, create available {% if nginx.lookup.server_enabled != nginx.lookup.server_available -%} @@ -91,7 +90,6 @@ nginx_server_available_dir: file.directory: {{ sls_block(nginx.servers.dir_opts) }} - name: {{ nginx.lookup.server_available }} - - clean: {{ nginx.servers.purge_servers_config }} {%- endif %} # Manage the actual server files @@ -157,3 +155,23 @@ nginx_server_available_dir: {%- endif %} {# enabled != available_dir #} {% endif %} {% endfor %} + + +{# Add . and .. to make it easier to not clean those #} +{% set valid_sites = ['.', '..', ] %} + +{# Take sites from nginx.servers.managed #} +{% for server, settings in salt['pillar.get']('nginx:servers:managed', {}).items() %} +{% do valid_sites.append(server) %} +{% endfor %} + +{% if salt['file.directory_exists'](nginx.lookup.server_enabled) %} +{% for filename in salt['file.readdir'](nginx.lookup.server_enabled) %} +{% if filename not in valid_sites %} + +{{ nginx.lookup.server_enabled ~ '/' ~ filename }}: + file.absent + +{% endif %} +{% endfor %} +{% endif %}