diff --git a/salt/docker/macros/docker_endpoint.jinja b/salt/docker/macros/docker_endpoint.jinja new file mode 100644 index 000000000..749e60eb0 --- /dev/null +++ b/salt/docker/macros/docker_endpoint.jinja @@ -0,0 +1,12 @@ +{% macro clear_stale_endpoint(container, network, ipv4, state_id=None) %} +{{ container }}_{{ network }}_stale_endpoint: + cmd.run: + - name: docker network disconnect -f {{ network }} {{ container }} || true + - onlyif: docker inspect {{ container }} + - unless: >- + docker inspect -f + '{{ '{{' }} with index .NetworkSettings.Networks "{{ network }}" {{ '}}' }}{{ '{{' }} .IPAMConfig.IPv4Address {{ '}}' }}{{ '{{' }} end {{ '}}' }}' + {{ container }} 2>/dev/null | grep -qx '{{ ipv4 }}' + - require_in: + - docker_container: {{ state_id or container }} +{% endmacro %} diff --git a/salt/elastalert/enabled.sls b/salt/elastalert/enabled.sls index d72c3b9c5..1909955ab 100644 --- a/salt/elastalert/enabled.sls +++ b/salt/elastalert/enabled.sls @@ -7,6 +7,9 @@ {% if sls.split('.')[0] in allowed_states %} {% from 'vars/globals.map.jinja' import GLOBALS %} {% from 'docker/docker.map.jinja' import DOCKERMERGED %} +{% from 'docker/macros/docker_endpoint.jinja' import clear_stale_endpoint %} + +{{ clear_stale_endpoint('so-elastalert', 'sobridge', DOCKERMERGED.containers['so-elastalert'].ip) }} include: - elastalert.config diff --git a/salt/elastic-fleet-package-registry/enabled.sls b/salt/elastic-fleet-package-registry/enabled.sls index a5a8b9d22..5196eb0d1 100644 --- a/salt/elastic-fleet-package-registry/enabled.sls +++ b/salt/elastic-fleet-package-registry/enabled.sls @@ -7,6 +7,9 @@ {% if sls.split('.')[0] in allowed_states %} {% from 'vars/globals.map.jinja' import GLOBALS %} {% from 'docker/docker.map.jinja' import DOCKERMERGED %} +{% from 'docker/macros/docker_endpoint.jinja' import clear_stale_endpoint %} + +{{ clear_stale_endpoint('so-elastic-fleet-package-registry', 'sobridge', DOCKERMERGED.containers['so-elastic-fleet-package-registry'].ip) }} include: - elastic-fleet-package-registry.config diff --git a/salt/elasticagent/enabled.sls b/salt/elasticagent/enabled.sls index c366ebbf7..e08923e9b 100644 --- a/salt/elasticagent/enabled.sls +++ b/salt/elasticagent/enabled.sls @@ -7,6 +7,9 @@ {% if sls.split('.')[0] in allowed_states %} {% from 'vars/globals.map.jinja' import GLOBALS %} {% from 'docker/docker.map.jinja' import DOCKERMERGED %} +{% from 'docker/macros/docker_endpoint.jinja' import clear_stale_endpoint %} + +{{ clear_stale_endpoint('so-elastic-agent', 'sobridge', DOCKERMERGED.containers['so-elastic-agent'].ip) }} include: - ca diff --git a/salt/elasticfleet/enabled.sls b/salt/elasticfleet/enabled.sls index ea64a4cb1..514ad2359 100644 --- a/salt/elasticfleet/enabled.sls +++ b/salt/elasticfleet/enabled.sls @@ -8,6 +8,7 @@ {% from 'vars/globals.map.jinja' import GLOBALS %} {% from 'docker/docker.map.jinja' import DOCKERMERGED %} {% from 'elasticfleet/map.jinja' import ELASTICFLEETMERGED %} +{% from 'docker/macros/docker_endpoint.jinja' import clear_stale_endpoint %} {# This value is generated during node install and stored in minion pillar #} {% set SERVICETOKEN = salt['pillar.get']('elasticfleet:config:server:es_token','') %} @@ -43,6 +44,8 @@ elasticagent_syncartifacts: {% endif %} {% if SERVICETOKEN != '' %} +{{ clear_stale_endpoint('so-elastic-fleet', 'sobridge', DOCKERMERGED.containers['so-elastic-fleet'].ip) }} + so-elastic-fleet: docker_container.running: - image: {{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-elastic-agent:{{ GLOBALS.so_version }} diff --git a/salt/elasticsearch/enabled.sls b/salt/elasticsearch/enabled.sls index 66d397b39..f383fda57 100644 --- a/salt/elasticsearch/enabled.sls +++ b/salt/elasticsearch/enabled.sls @@ -10,6 +10,9 @@ {% from 'elasticsearch/config.map.jinja' import ELASTICSEARCH_NODES %} {% from 'elasticsearch/config.map.jinja' import ELASTICSEARCH_SEED_HOSTS %} {% from 'elasticsearch/config.map.jinja' import ELASTICSEARCHMERGED %} +{% from 'docker/macros/docker_endpoint.jinja' import clear_stale_endpoint %} + +{{ clear_stale_endpoint('so-elasticsearch', 'sobridge', DOCKERMERGED.containers['so-elasticsearch'].ip) }} include: - ca diff --git a/salt/hydra/enabled.sls b/salt/hydra/enabled.sls index ee6a0c811..8c6a44cb0 100644 --- a/salt/hydra/enabled.sls +++ b/salt/hydra/enabled.sls @@ -14,6 +14,9 @@ {% from 'docker/docker.map.jinja' import DOCKERMERGED %} {% from 'vars/globals.map.jinja' import GLOBALS %} {% if 'api' in salt['pillar.get']('features', []) %} +{% from 'docker/macros/docker_endpoint.jinja' import clear_stale_endpoint %} + +{{ clear_stale_endpoint('so-hydra', 'sobridge', DOCKERMERGED.containers['so-hydra'].ip) }} include: - hydra.config diff --git a/salt/influxdb/enabled.sls b/salt/influxdb/enabled.sls index 45038ece5..2642d0e94 100644 --- a/salt/influxdb/enabled.sls +++ b/salt/influxdb/enabled.sls @@ -9,6 +9,9 @@ {% from 'docker/docker.map.jinja' import DOCKERMERGED %} {% set PASSWORD = salt['pillar.get']('secrets:influx_pass') %} {% set TOKEN = salt['pillar.get']('influxdb:token') %} +{% from 'docker/macros/docker_endpoint.jinja' import clear_stale_endpoint %} + +{{ clear_stale_endpoint('so-influxdb', 'sobridge', DOCKERMERGED.containers['so-influxdb'].ip) }} include: - influxdb.ssl diff --git a/salt/kafka/enabled.sls b/salt/kafka/enabled.sls index 504efea05..87ac98659 100644 --- a/salt/kafka/enabled.sls +++ b/salt/kafka/enabled.sls @@ -16,6 +16,9 @@ {% set KAFKANODES = salt['pillar.get']('kafka:nodes') %} {% set KAFKA_EXTERNAL_ACCESS = salt['pillar.get']('kafka:config:external_access:enabled', default=False) %} {% if 'gmd' in salt['pillar.get']('features', []) %} +{% from 'docker/macros/docker_endpoint.jinja' import clear_stale_endpoint %} + +{{ clear_stale_endpoint('so-kafka', 'sobridge', DOCKERMERGED.containers['so-kafka'].ip) }} include: - kafka.ca diff --git a/salt/kibana/enabled.sls b/salt/kibana/enabled.sls index e8b561754..853ec2f13 100644 --- a/salt/kibana/enabled.sls +++ b/salt/kibana/enabled.sls @@ -8,6 +8,9 @@ {% from 'docker/docker.map.jinja' import DOCKERMERGED %} {% from 'elasticsearch/config.map.jinja' import ELASTICSEARCHMERGED %} {% from 'vars/globals.map.jinja' import GLOBALS %} +{% from 'docker/macros/docker_endpoint.jinja' import clear_stale_endpoint %} + +{{ clear_stale_endpoint('so-kibana', 'sobridge', DOCKERMERGED.containers['so-kibana'].ip) }} include: - kibana.config diff --git a/salt/kratos/enabled.sls b/salt/kratos/enabled.sls index 35587a520..b0c7fb490 100644 --- a/salt/kratos/enabled.sls +++ b/salt/kratos/enabled.sls @@ -7,6 +7,9 @@ {% if sls.split('.')[0] in allowed_states %} {% from 'docker/docker.map.jinja' import DOCKERMERGED %} {% from 'vars/globals.map.jinja' import GLOBALS %} +{% from 'docker/macros/docker_endpoint.jinja' import clear_stale_endpoint %} + +{{ clear_stale_endpoint('so-kratos', 'sobridge', DOCKERMERGED.containers['so-kratos'].ip) }} include: - kratos.config diff --git a/salt/logstash/enabled.sls b/salt/logstash/enabled.sls index 60fed4ced..10179d451 100644 --- a/salt/logstash/enabled.sls +++ b/salt/logstash/enabled.sls @@ -10,6 +10,9 @@ {% from 'logstash/map.jinja' import LOGSTASH_MERGED %} {% from 'logstash/map.jinja' import LOGSTASH_NODES %} {% set lsheap = LOGSTASH_MERGED.settings.lsheap %} +{% from 'docker/macros/docker_endpoint.jinja' import clear_stale_endpoint %} + +{{ clear_stale_endpoint('so-logstash', 'sobridge', DOCKERMERGED.containers['so-logstash'].ip) }} include: - ca diff --git a/salt/nginx/enabled.sls b/salt/nginx/enabled.sls index 40fde5b0e..c2cab13c0 100644 --- a/salt/nginx/enabled.sls +++ b/salt/nginx/enabled.sls @@ -8,6 +8,7 @@ {% from 'vars/globals.map.jinja' import GLOBALS %} {% from 'docker/docker.map.jinja' import DOCKERMERGED %} {% from 'nginx/map.jinja' import NGINXMERGED %} +{% from 'docker/macros/docker_endpoint.jinja' import clear_stale_endpoint %} include: - nginx.ssl @@ -31,6 +32,8 @@ make-rule-dir-nginx: {% set container_config = 'so-nginx-fleet-node' %} {% endif %} +{{ clear_stale_endpoint('so-nginx', 'sobridge', DOCKERMERGED.containers[container_config].ip) }} + so-nginx: docker_container.running: - image: {{ GLOBALS.registry_host }}:5000/{{ GLOBALS.image_repo }}/so-nginx:{{ GLOBALS.so_version }} diff --git a/salt/postgres/enabled.sls b/salt/postgres/enabled.sls index 20d256ae8..556458694 100644 --- a/salt/postgres/enabled.sls +++ b/salt/postgres/enabled.sls @@ -8,6 +8,9 @@ {% from 'vars/globals.map.jinja' import GLOBALS %} {% from 'docker/docker.map.jinja' import DOCKERMERGED %} {% set SO_POSTGRES_USER = salt['pillar.get']('postgres:auth:users:so_postgres_user:user', 'so_postgres') %} +{% from 'docker/macros/docker_endpoint.jinja' import clear_stale_endpoint %} + +{{ clear_stale_endpoint('so-postgres', 'sobridge', DOCKERMERGED.containers['so-postgres'].ip) }} include: - postgres.auth diff --git a/salt/redis/enabled.sls b/salt/redis/enabled.sls index 4cea8d028..17030b0f2 100644 --- a/salt/redis/enabled.sls +++ b/salt/redis/enabled.sls @@ -7,6 +7,9 @@ {% if sls.split('.')[0] in allowed_states %} {% from 'docker/docker.map.jinja' import DOCKERMERGED %} {% from 'vars/globals.map.jinja' import GLOBALS %} +{% from 'docker/macros/docker_endpoint.jinja' import clear_stale_endpoint %} + +{{ clear_stale_endpoint('so-redis', 'sobridge', DOCKERMERGED.containers['so-redis'].ip) }} include: - ca diff --git a/salt/registry/enabled.sls b/salt/registry/enabled.sls index a7a0f4478..24037a1d5 100644 --- a/salt/registry/enabled.sls +++ b/salt/registry/enabled.sls @@ -7,6 +7,9 @@ {% if sls.split('.')[0] in allowed_states %} {% from 'vars/globals.map.jinja' import GLOBALS %} {% from 'docker/docker.map.jinja' import DOCKERMERGED %} +{% from 'docker/macros/docker_endpoint.jinja' import clear_stale_endpoint %} + +{{ clear_stale_endpoint('so-dockerregistry', 'sobridge', DOCKERMERGED.containers['so-dockerregistry'].ip) }} include: - registry.ssl diff --git a/salt/soc/enabled.sls b/salt/soc/enabled.sls index b907864a2..a9cf00b6b 100644 --- a/salt/soc/enabled.sls +++ b/salt/soc/enabled.sls @@ -10,6 +10,9 @@ {% from 'soc/merged.map.jinja' import DOCKER_EXTRA_HOSTS %} {% from 'soc/merged.map.jinja' import SOCMERGED %} +{% from 'docker/macros/docker_endpoint.jinja' import clear_stale_endpoint %} +{{ clear_stale_endpoint('so-soc', 'sobridge', DOCKERMERGED.containers['so-soc'].ip) }} + include: - ca - soc.config diff --git a/salt/strelka/backend/enabled.sls b/salt/strelka/backend/enabled.sls index ca3f0e6dc..48d2e7b7d 100644 --- a/salt/strelka/backend/enabled.sls +++ b/salt/strelka/backend/enabled.sls @@ -7,6 +7,9 @@ {% if sls.split('.')[0] in allowed_states %} {% from 'docker/docker.map.jinja' import DOCKERMERGED %} {% from 'vars/globals.map.jinja' import GLOBALS %} +{% from 'docker/macros/docker_endpoint.jinja' import clear_stale_endpoint %} + +{{ clear_stale_endpoint('so-strelka-backend', 'sobridge', DOCKERMERGED.containers['so-strelka-backend'].ip, state_id='strelka_backend') }} include: - strelka.backend.config diff --git a/salt/strelka/coordinator/enabled.sls b/salt/strelka/coordinator/enabled.sls index 6756a324c..ad38f4b93 100644 --- a/salt/strelka/coordinator/enabled.sls +++ b/salt/strelka/coordinator/enabled.sls @@ -7,6 +7,9 @@ {% if sls.split('.')[0] in allowed_states %} {% from 'docker/docker.map.jinja' import DOCKERMERGED %} {% from 'vars/globals.map.jinja' import GLOBALS %} +{% from 'docker/macros/docker_endpoint.jinja' import clear_stale_endpoint %} + +{{ clear_stale_endpoint('so-strelka-coordinator', 'sobridge', DOCKERMERGED.containers['so-strelka-coordinator'].ip, state_id='strelka_coordinator') }} include: - strelka.coordinator.config diff --git a/salt/strelka/filestream/enabled.sls b/salt/strelka/filestream/enabled.sls index b03faf4b1..2c7264404 100644 --- a/salt/strelka/filestream/enabled.sls +++ b/salt/strelka/filestream/enabled.sls @@ -7,6 +7,9 @@ {% if sls.split('.')[0] in allowed_states %} {% from 'docker/docker.map.jinja' import DOCKERMERGED %} {% from 'vars/globals.map.jinja' import GLOBALS %} +{% from 'docker/macros/docker_endpoint.jinja' import clear_stale_endpoint %} + +{{ clear_stale_endpoint('so-strelka-filestream', 'sobridge', DOCKERMERGED.containers['so-strelka-filestream'].ip, state_id='strelka_filestream') }} include: - strelka.filestream.config diff --git a/salt/strelka/frontend/enabled.sls b/salt/strelka/frontend/enabled.sls index 58e703898..de7fa8fc8 100644 --- a/salt/strelka/frontend/enabled.sls +++ b/salt/strelka/frontend/enabled.sls @@ -7,6 +7,9 @@ {% if sls.split('.')[0] in allowed_states %} {% from 'docker/docker.map.jinja' import DOCKERMERGED %} {% from 'vars/globals.map.jinja' import GLOBALS %} +{% from 'docker/macros/docker_endpoint.jinja' import clear_stale_endpoint %} + +{{ clear_stale_endpoint('so-strelka-frontend', 'sobridge', DOCKERMERGED.containers['so-strelka-frontend'].ip, state_id='strelka_frontend') }} include: - strelka.frontend.config diff --git a/salt/strelka/gatekeeper/enabled.sls b/salt/strelka/gatekeeper/enabled.sls index 45b6e467e..6c7d4d1d6 100644 --- a/salt/strelka/gatekeeper/enabled.sls +++ b/salt/strelka/gatekeeper/enabled.sls @@ -7,6 +7,9 @@ {% if sls.split('.')[0] in allowed_states %} {% from 'docker/docker.map.jinja' import DOCKERMERGED %} {% from 'vars/globals.map.jinja' import GLOBALS %} +{% from 'docker/macros/docker_endpoint.jinja' import clear_stale_endpoint %} + +{{ clear_stale_endpoint('so-strelka-gatekeeper', 'sobridge', DOCKERMERGED.containers['so-strelka-gatekeeper'].ip, state_id='strelka_gatekeeper') }} include: - strelka.gatekeeper.config diff --git a/salt/strelka/manager/enabled.sls b/salt/strelka/manager/enabled.sls index 7c73452d8..22d6a90dd 100644 --- a/salt/strelka/manager/enabled.sls +++ b/salt/strelka/manager/enabled.sls @@ -7,6 +7,9 @@ {% if sls.split('.')[0] in allowed_states %} {% from 'docker/docker.map.jinja' import DOCKERMERGED %} {% from 'vars/globals.map.jinja' import GLOBALS %} +{% from 'docker/macros/docker_endpoint.jinja' import clear_stale_endpoint %} + +{{ clear_stale_endpoint('so-strelka-manager', 'sobridge', DOCKERMERGED.containers['so-strelka-manager'].ip, state_id='strelka_manager') }} include: - strelka.manager.config