fix(roles): detect new image on podman pull and restart services
Same bug as immich (556fae8): 'Writing manifest' goes to stderr, so
changed_when never matched and the restart handlers never fired after
image upgrades. Compare local image IDs before/after pull instead, and
notify the restart handler only on a genuinely new image.
Applies to fdroid, gitea, metabase, ntfy, unifi, uptime-kuma.
This commit is contained in:
@@ -51,13 +51,22 @@
|
||||
group: "{{ ansible_user }}"
|
||||
mode: "0755"
|
||||
|
||||
- name: Pull Metabase container image
|
||||
ansible.builtin.command: "podman pull {{ metabase_image }}:{{ metabase_version }}"
|
||||
register: pull_result
|
||||
changed_when: pull_result.stdout is search('Writing manifest')
|
||||
- name: Get current metabase image ID
|
||||
ansible.builtin.command: "podman image inspect --format {% raw %}{{.Id}}{% endraw %} {{ metabase_image }}:{{ metabase_version }}"
|
||||
register: metabase_image_id_before
|
||||
failed_when: false # image may not exist yet on first deploy
|
||||
changed_when: false
|
||||
become: false
|
||||
become_user: "{{ ansible_user }}"
|
||||
|
||||
- name: Pull Metabase container image
|
||||
ansible.builtin.command: "podman pull --quiet {{ metabase_image }}:{{ metabase_version }}"
|
||||
register: pull_result
|
||||
changed_when: pull_result.stdout != metabase_image_id_before.stdout
|
||||
become: false
|
||||
become_user: "{{ ansible_user }}"
|
||||
notify: Restart Metabase
|
||||
|
||||
- name: Deploy Kubernetes YAML for Metabase
|
||||
ansible.builtin.template:
|
||||
src: metabase.yaml.j2
|
||||
|
||||
Reference in New Issue
Block a user