From 43eefc8e69c0dfd8371a5de47cf52e135c6d47bd Mon Sep 17 00:00:00 2001 From: Martin van Es Date: Tue, 7 Jul 2026 16:34:25 +0200 Subject: [PATCH 1/2] Fix redis conditional container restart --- roles/sram_redis/handlers/main.yml | 1 + roles/sram_redis/tasks/main.yml | 8 ++------ 2 files changed, 3 insertions(+), 6 deletions(-) diff --git a/roles/sram_redis/handlers/main.yml b/roles/sram_redis/handlers/main.yml index b08f0b62b..666ac2368 100644 --- a/roles/sram_redis/handlers/main.yml +++ b/roles/sram_redis/handlers/main.yml @@ -4,3 +4,4 @@ name: sram-redis state: started restart: true + when: rediscontainer is success and rediscontainer is not change diff --git a/roles/sram_redis/tasks/main.yml b/roles/sram_redis/tasks/main.yml index c4c8286c6..d7405a587 100644 --- a/roles/sram_redis/tasks/main.yml +++ b/roles/sram_redis/tasks/main.yml @@ -45,18 +45,13 @@ mode: "0644" notify: "Restart redis container" -- name: "Pull redis image" - community.docker.docker_image_pull: - name: "{{ sram_redis_image }}" - register: "redis_image" - - name: "Create redis container" community.docker.docker_container: name: "sram-redis" image: "{{ sram_redis_image }}" + pull: true restart_policy: "always" state: "started" - restart: "{{ redis_image is changed }}" user: "{{ redis_user_uid }}:{{ redis_group_gid }}" command: | redis-server /usr/local/etc/redis/redis.conf @@ -66,3 +61,4 @@ networks: # TODO: Should this not be parametrized? - name: loadbalancer + register: rediscontainer From 94f03fde12c31899f308c378c8b2c9ffc403225f Mon Sep 17 00:00:00 2001 From: Martin van Es Date: Thu, 9 Jul 2026 16:18:39 +0200 Subject: [PATCH 2/2] WIP --- roles/sram_ldap/handlers/main.yml | 1 + roles/sram_ldap/tasks/main.yml | 10 ++++----- roles/sram_midproxy/handlers/main.yml | 7 +++++++ roles/sram_midproxy/tasks/main.yml | 15 ++++++++------ roles/sram_plsc/handlers/main.yml | 1 + roles/sram_plsc/tasks/main.yml | 15 +++++++------- roles/sram_redis/handlers/main.yml | 2 +- roles/sram_redis/tasks/main.yml | 2 +- roles/sram_sbs/handlers/main.yml | 1 + roles/sram_sbs/tasks/main.yml | 29 +++++++++++++++------------ 10 files changed, 50 insertions(+), 33 deletions(-) create mode 100644 roles/sram_midproxy/handlers/main.yml diff --git a/roles/sram_ldap/handlers/main.yml b/roles/sram_ldap/handlers/main.yml index f6136cfeb..2ff0bade2 100644 --- a/roles/sram_ldap/handlers/main.yml +++ b/roles/sram_ldap/handlers/main.yml @@ -4,3 +4,4 @@ name: "sram-ldap" restart: true state: started + when: ldap_container is success and ldap_container is not change diff --git a/roles/sram_ldap/tasks/main.yml b/roles/sram_ldap/tasks/main.yml index b6da9cb18..b08627abc 100644 --- a/roles/sram_ldap/tasks/main.yml +++ b/roles/sram_ldap/tasks/main.yml @@ -53,10 +53,10 @@ combine({ host.key | format(item.key): host.value | format(item.value) }) }} with_dict: "{{ sram_ldap_hosts }}" -- name: "Pull ldap image" - community.docker.docker_image_pull: - name: "{{ sram_ldap_image }}" - register: "ldap_image" +# - name: "Pull ldap image" +# community.docker.docker_image_pull: +# name: "{{ sram_ldap_image }}" +# register: "ldap_image" - name: Create the ldap container community.docker.docker_container: @@ -89,7 +89,7 @@ - "bash" - "-c" - "[[ -S /var/run/slapd/ldapi ]]" - register: "ldap_container" + register: ldap_container - name: Wait for LDAP initialization ansible.builtin.wait_for: diff --git a/roles/sram_midproxy/handlers/main.yml b/roles/sram_midproxy/handlers/main.yml new file mode 100644 index 000000000..3063d0ba5 --- /dev/null +++ b/roles/sram_midproxy/handlers/main.yml @@ -0,0 +1,7 @@ +--- +- name: Restart the satosa container + community.docker.docker_container: + name: sram-satosa + restart: true + state: started + when: satosa_container is success and satosa_container is not change diff --git a/roles/sram_midproxy/tasks/main.yml b/roles/sram_midproxy/tasks/main.yml index 19125220b..caa6afd1b 100644 --- a/roles/sram_midproxy/tasks/main.yml +++ b/roles/sram_midproxy/tasks/main.yml @@ -38,6 +38,7 @@ group: "{{ sram_midproxy_group }}" # mkdir: cannot create directory '.': Permission denied mode: "0644" + notify: Restart the satosa container - name: Copy SATOSA conf files ansible.builtin.copy: @@ -49,20 +50,21 @@ - internal_attributes.yaml - proxy_conf.yaml - plugins/ + notify: Restart the satosa container -- name: "Pull satosa image" - community.docker.docker_image_pull: - name: "{{ sram_midproxy_satosa_image }}" - register: "satosa_image" +# - name: "Pull satosa image" +# community.docker.docker_image_pull: +# name: "{{ sram_midproxy_satosa_image }}" +# register: "satosa_image" - name: Create the SATOSA container community.docker.docker_container: name: sram-midproxy image: "{{ sram_midproxy_satosa_image }}" - pull: never + pull: true restart_policy: "always" state: started - restart: "{{ satosa_image is changed }}" + # restart: "{{ satosa_image is changed }}" # 2026-05-21 07:25:44 +0000] [1] [ERROR] Control server error: [Errno 13] Permission denied: '/.gunicorn' # user: "{{ midproxy_user_uid }}" networks: @@ -88,3 +90,4 @@ # timeout: 10s # retries: 3 # start_period: 10s + register: satosa_container diff --git a/roles/sram_plsc/handlers/main.yml b/roles/sram_plsc/handlers/main.yml index a0dee373a..e7ab386d2 100644 --- a/roles/sram_plsc/handlers/main.yml +++ b/roles/sram_plsc/handlers/main.yml @@ -4,3 +4,4 @@ name: sram-plsc restart: true state: started + when: plsc_container is success and plsc_container is not change diff --git a/roles/sram_plsc/tasks/main.yml b/roles/sram_plsc/tasks/main.yml index 365cf0866..a6fa9113f 100644 --- a/roles/sram_plsc/tasks/main.yml +++ b/roles/sram_plsc/tasks/main.yml @@ -13,19 +13,19 @@ no_log: "{{ sram_plsc_ansible_nolog }}" notify: "Restart the plsc container" -- name: "Pull plsc image" - community.docker.docker_image_pull: - name: "{{ sram_plsc_image }}" - register: "plsc_image" +# - name: "Pull plsc image" +# community.docker.docker_image_pull: +# name: "{{ sram_plsc_image }}" +# register: "plsc_image" - name: Create the plsc container community.docker.docker_container: name: "sram-plsc" image: "{{ sram_plsc_image }}" restart_policy: "always" - state: started - restart: "{{ plsc_image is changed }}" - pull: never + state: "started" + # restart: "{{ plsc_image is changed }}" + pull: true mounts: - type: bind source: "{{ sram_plsc_conf_dir }}/plsc.yml" @@ -33,3 +33,4 @@ networks: # TODO: Should this not be parametrized? - name: "loadbalancer" + register: "plsc_container" diff --git a/roles/sram_redis/handlers/main.yml b/roles/sram_redis/handlers/main.yml index 666ac2368..081226059 100644 --- a/roles/sram_redis/handlers/main.yml +++ b/roles/sram_redis/handlers/main.yml @@ -4,4 +4,4 @@ name: sram-redis state: started restart: true - when: rediscontainer is success and rediscontainer is not change + when: redis_container is success and redis_container is not change diff --git a/roles/sram_redis/tasks/main.yml b/roles/sram_redis/tasks/main.yml index d7405a587..51bcdb529 100644 --- a/roles/sram_redis/tasks/main.yml +++ b/roles/sram_redis/tasks/main.yml @@ -61,4 +61,4 @@ networks: # TODO: Should this not be parametrized? - name: loadbalancer - register: rediscontainer + register: redis_container diff --git a/roles/sram_sbs/handlers/main.yml b/roles/sram_sbs/handlers/main.yml index bc8be505b..271e12d08 100644 --- a/roles/sram_sbs/handlers/main.yml +++ b/roles/sram_sbs/handlers/main.yml @@ -7,3 +7,4 @@ loop: - sram-sbs-client - sram-sbs-server + when: sbs_container is success and sbs_container is not change diff --git a/roles/sram_sbs/tasks/main.yml b/roles/sram_sbs/tasks/main.yml index 9c0d93d80..6073d10af 100644 --- a/roles/sram_sbs/tasks/main.yml +++ b/roles/sram_sbs/tasks/main.yml @@ -66,24 +66,25 @@ no_log: "{{ sram_sbs_ansible_nolog }}" notify: "Restart sbs containers" -- name: "Pull sbs image" - community.docker.docker_image_pull: - name: "{{ item }}" - with_items: - - "{{ sram_sbs_client_image }}" - - "{{ sram_sbs_server_image }}" - register: "sbs_images" +# - name: "Pull sbs image" +# community.docker.docker_image_pull: +# name: "{{ item }}" +# with_items: +# - "{{ sram_sbs_client_image }}" +# - "{{ sram_sbs_server_image }}" +# register: "sbs_images" - name: "Migration" # For some reason --check breaks this block - when: "sbs_images is changed and not ansible_check_mode" + # when: "sbs_images is changed and not ansible_check_mode" + when: "not ansible_check_mode" block: - name: "Run SBS migrations" throttle: 1 community.docker.docker_container: name: "sram-sbs-migration" image: "{{ sram_sbs_server_image }}" - pull: "never" + pull: true state: "started" restart_policy: "no" detach: false @@ -99,7 +100,7 @@ networks: # TODO: Should we parametrize this? - name: "loadbalancer" - register: "result" + register: "sbs_container" failed_when: "'container' not in result or result.container.State.ExitCode != 0" changed_when: "'[alembic.runtime.migration] Running upgrade' in result.container.Output | default('')" notify: "Restart sbs containers" @@ -115,10 +116,10 @@ community.docker.docker_container: name: "sram-sbs-client" image: "{{ sram_sbs_client_image }}" - pull: "never" + pull: true restart_policy: "always" state: "started" - restart: "{{ sbs_images is changed}}" + # restart: "{{ sbs_images is changed}}" volumes: - "{{ sram_sbs_conf_dir }}/sbs-apache.conf:/etc/apache2/sites-enabled/sbs.conf:ro" - "{{ sram_sbs_conf_dir }}/disclaimer.css:/opt/sbs/client/dist/disclaimer.css:ro" @@ -128,6 +129,7 @@ traefik.http.routers.sbsclient.rule: "Host(`{{ sram_sbs_base_domain }}`)" traefik.http.routers.sbsclient.tls: "true" traefik.enable: "true" + notify: "Restart sbs containers" - name: "Start SBS server container" community.docker.docker_container: @@ -135,7 +137,7 @@ image: "{{ sram_sbs_server_image }}" restart_policy: "always" state: "started" - restart: "{{ sbs_images is changed}}" + # restart: "{{ sbs_images is changed}}" env: RUNAS_UID: "{{ sbs_user_uid | string }}" RUNAS_GID: "{{ sbs_group_gid | string }}" @@ -151,3 +153,4 @@ - name: "loadbalancer" etc_hosts: host.docker.internal: host-gateway + notify: "Restart sbs containers"