From 72fa38e928777bf94509c5f31c7d7e2c45fd132a Mon Sep 17 00:00:00 2001 From: Hermes Agent service account Date: Fri, 29 May 2026 21:53:47 -0500 Subject: [PATCH] fix(semaphore): force container restart when Quadlet template changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Quadlet regenerates the systemd unit on daemon-reload but does not restart the running container — the process keeps its original environment until restarted. Add explicit 'state: restarted' tasks gated on the Quadlet template's changed status so env-var updates actually take effect on re-runs. --- ansible/roles/semaphore/tasks/postgres.yml | 8 ++++++++ ansible/roles/semaphore/tasks/semaphore.yml | 10 ++++++++++ 2 files changed, 18 insertions(+) diff --git a/ansible/roles/semaphore/tasks/postgres.yml b/ansible/roles/semaphore/tasks/postgres.yml index 6883eb0..1318693 100644 --- a/ansible/roles/semaphore/tasks/postgres.yml +++ b/ansible/roles/semaphore/tasks/postgres.yml @@ -33,3 +33,11 @@ retries: 30 delay: 2 changed_when: false + +# Same Quadlet-restart caveat as Semaphore: regenerated unit but the +# running container keeps its original env until forced. +- name: Restart PostgreSQL on Quadlet change + ansible.builtin.systemd: + name: "{{ semaphore_postgres_container_name }}.service" + state: restarted + when: postgres_quadlet.changed diff --git a/ansible/roles/semaphore/tasks/semaphore.yml b/ansible/roles/semaphore/tasks/semaphore.yml index f7c24ac..4ef6389 100644 --- a/ansible/roles/semaphore/tasks/semaphore.yml +++ b/ansible/roles/semaphore/tasks/semaphore.yml @@ -22,3 +22,13 @@ name: "{{ semaphore_container_name }}.service" state: started enabled: true + +# Quadlet does NOT auto-restart a running container when its .container +# file changes — the systemd unit is regenerated, but the container +# process keeps its original env. Force a restart when the Quadlet +# template was modified so env-var changes actually take effect. +- name: Restart Semaphore on Quadlet change + ansible.builtin.systemd: + name: "{{ semaphore_container_name }}.service" + state: restarted + when: semaphore_quadlet.changed