From 2f28b151f5e8d2e3ef8065ee1662ab4a91b48699 Mon Sep 17 00:00:00 2001 From: Erich Blume Date: Wed, 14 Jan 2026 14:14:52 -0800 Subject: [PATCH] Fix launchctl idempotency in kiwix and borgmatic roles Check if LaunchAgent is already loaded before attempting to load it. Co-Authored-By: Claude Opus 4.5 --- ansible/roles/borgmatic/tasks/main.yml | 13 +++++++++---- ansible/roles/kiwix/tasks/main.yml | 13 +++++++++---- 2 files changed, 18 insertions(+), 8 deletions(-) diff --git a/ansible/roles/borgmatic/tasks/main.yml b/ansible/roles/borgmatic/tasks/main.yml index 16d8d05..f0c749a 100644 --- a/ansible/roles/borgmatic/tasks/main.yml +++ b/ansible/roles/borgmatic/tasks/main.yml @@ -9,8 +9,13 @@ mode: '0644' notify: reload borgmatic -- name: Ensure borgmatic LaunchAgent is loaded - ansible.builtin.command: launchctl load ~/Library/LaunchAgents/mcquack.eblume.borgmatic.plist - register: launchctl_load - changed_when: launchctl_load.rc == 0 +- name: Check if borgmatic LaunchAgent is loaded + ansible.builtin.command: launchctl list mcquack.eblume.borgmatic + register: launchctl_check + changed_when: false + failed_when: false + +- name: Load borgmatic LaunchAgent if not loaded + ansible.builtin.command: launchctl load ~/Library/LaunchAgents/mcquack.eblume.borgmatic.plist + when: launchctl_check.rc != 0 failed_when: false diff --git a/ansible/roles/kiwix/tasks/main.yml b/ansible/roles/kiwix/tasks/main.yml index 39794d3..c45f895 100644 --- a/ansible/roles/kiwix/tasks/main.yml +++ b/ansible/roles/kiwix/tasks/main.yml @@ -178,8 +178,13 @@ mode: '0644' notify: restart kiwix-serve -- name: Ensure kiwix-serve is loaded - ansible.builtin.command: launchctl load ~/Library/LaunchAgents/mcquack.eblume.kiwix-serve.plist - register: launchctl_load - changed_when: launchctl_load.rc == 0 +- name: Check if kiwix-serve LaunchAgent is loaded + ansible.builtin.command: launchctl list mcquack.eblume.kiwix-serve + register: launchctl_check + changed_when: false + failed_when: false + +- name: Load kiwix-serve LaunchAgent if not loaded + ansible.builtin.command: launchctl load ~/Library/LaunchAgents/mcquack.eblume.kiwix-serve.plist + when: launchctl_check.rc != 0 failed_when: false