From 16010ff8c70988936f8ca81bb302b9d72242c0ed Mon Sep 17 00:00:00 2001 From: Slavi Pantaleev Date: Fri, 13 Feb 2026 15:33:54 +0200 Subject: [PATCH] Add conditional restart support to client, bot, and bridge roles For each of the 34 roles (3 clients, 9 bots, 22 bridges), this commit: - Adds `_restart_necessary: false` default variable - Adds `register:` directives to config/image/systemd tasks - Computes `_restart_necessary` via set_fact (OR of all .changed results) - Wires `(_restart_necessary | bool)` in group_vars/matrix_servers This allows the systemd service manager to skip unnecessary restarts when running install-* tags and nothing actually changed. Service roles and complex multi-service roles will follow separately. Co-Authored-By: Claude Opus 4.6 --- group_vars/matrix_servers | 68 +++++++++---------- .../matrix-bot-baibot/defaults/main.yml | 10 +++ .../matrix-bot-baibot/tasks/install.yml | 17 ++++- .../matrix-bot-buscarron/defaults/main.yml | 10 +++ .../tasks/setup_install.yml | 16 ++++- .../matrix-bot-draupnir/defaults/main.yml | 10 +++ .../tasks/setup_install.yml | 17 ++++- .../matrix-bot-go-neb/defaults/main.yml | 10 +++ .../matrix-bot-go-neb/tasks/install.yml | 17 ++++- .../matrix-bot-honoroit/defaults/main.yml | 10 +++ .../tasks/setup_install.yml | 15 +++- .../defaults/main.yml | 10 +++ .../tasks/setup_install.yml | 15 +++- .../defaults/main.yml | 10 +++ .../tasks/setup_install.yml | 15 +++- .../matrix-bot-maubot/defaults/main.yml | 10 +++ .../matrix-bot-maubot/tasks/setup_install.yml | 17 ++++- .../matrix-bot-mjolnir/defaults/main.yml | 10 +++ .../tasks/setup_install.yml | 15 +++- .../defaults/main.yml | 10 +++ .../tasks/setup_install.yml | 17 ++++- .../defaults/main.yml | 10 +++ .../tasks/setup_install.yml | 19 +++++- .../defaults/main.yml | 10 +++ .../tasks/setup_install.yml | 20 +++++- .../defaults/main.yml | 10 +++ .../tasks/setup_install.yml | 17 ++++- .../defaults/main.yml | 10 +++ .../tasks/setup_install.yml | 17 ++++- .../matrix-bridge-hookshot/defaults/main.yml | 10 +++ .../tasks/setup_install.yml | 21 +++++- .../defaults/main.yml | 10 +++ .../tasks/setup_install.yml | 20 +++++- .../defaults/main.yml | 10 +++ .../tasks/setup_install.yml | 19 +++++- .../defaults/main.yml | 10 +++ .../tasks/setup_install.yml | 20 +++++- .../defaults/main.yml | 10 +++ .../tasks/setup_install.yml | 20 +++++- .../defaults/main.yml | 10 +++ .../tasks/install.yml | 20 +++++- .../defaults/main.yml | 10 +++ .../tasks/install.yml | 20 +++++- .../defaults/main.yml | 10 +++ .../tasks/setup_install.yml | 20 +++++- .../defaults/main.yml | 10 +++ .../tasks/setup_install.yml | 17 ++++- .../defaults/main.yml | 10 +++ .../tasks/setup_install.yml | 20 +++++- .../defaults/main.yml | 10 +++ .../tasks/setup_install.yml | 20 +++++- .../defaults/main.yml | 10 +++ .../tasks/setup_install.yml | 20 +++++- .../defaults/main.yml | 10 +++ .../tasks/setup_install.yml | 18 ++++- .../defaults/main.yml | 10 +++ .../tasks/setup_install.yml | 18 ++++- .../defaults/main.yml | 10 +++ .../tasks/setup_install.yml | 15 +++- .../matrix-bridge-sms/defaults/main.yml | 10 +++ .../matrix-bridge-sms/tasks/setup_install.yml | 19 +++++- .../matrix-bridge-steam/defaults/main.yml | 10 +++ .../tasks/setup_install.yml | 20 +++++- .../matrix-client-element/defaults/main.yml | 10 +++ .../tasks/setup_install.yml | 19 +++++- .../defaults/main.yml | 10 +++ .../tasks/setup_install.yml | 15 +++- .../defaults/main.yml | 10 +++ .../tasks/setup_install.yml | 19 +++++- 69 files changed, 920 insertions(+), 102 deletions(-) diff --git a/group_vars/matrix_servers b/group_vars/matrix_servers index a5259b34a..f5ef21263 100755 --- a/group_vars/matrix_servers +++ b/group_vars/matrix_servers @@ -304,70 +304,70 @@ devture_systemd_service_manager_services_list_auto: | ([{ 'name': 'matrix-bot-buscarron.service', 'priority': 2200, - 'restart_necessary': true, + 'restart_necessary': (matrix_bot_buscarron_restart_necessary | bool), 'groups': ['matrix', 'bots', 'buscarron', 'bot-buscarron'], }] if matrix_bot_buscarron_enabled else []) + ([{ 'name': 'matrix-bot-baibot.service', 'priority': 2200, - 'restart_necessary': true, + 'restart_necessary': (matrix_bot_baibot_restart_necessary | bool), 'groups': ['matrix', 'bots', 'baibot', 'bot-baibot'], }] if matrix_bot_baibot_enabled else []) + ([{ 'name': 'matrix-bot-go-neb.service', 'priority': 2200, - 'restart_necessary': true, + 'restart_necessary': (matrix_bot_go_neb_restart_necessary | bool), 'groups': ['matrix', 'bots', 'go-neb', 'bot-go-neb'], }] if matrix_bot_go_neb_enabled else []) + ([{ 'name': 'matrix-bot-honoroit.service', 'priority': 2200, - 'restart_necessary': true, + 'restart_necessary': (matrix_bot_honoroit_restart_necessary | bool), 'groups': ['matrix', 'bots', 'honoroit', 'bot-honoroit'], }] if matrix_bot_honoroit_enabled else []) + ([{ 'name': 'matrix-bot-matrix-registration-bot.service', 'priority': 2200, - 'restart_necessary': true, + 'restart_necessary': (matrix_bot_matrix_registration_bot_restart_necessary | bool), 'groups': ['matrix', 'bots', 'registration-bot', 'bot-matrix-registration-bot'], }] if matrix_bot_matrix_registration_bot_enabled else []) + ([{ 'name': 'matrix-bot-matrix-reminder-bot.service', 'priority': 2200, - 'restart_necessary': true, + 'restart_necessary': (matrix_bot_matrix_reminder_bot_restart_necessary | bool), 'groups': ['matrix', 'bots', 'reminder-bot', 'bot-matrix-reminder-bot'], }] if matrix_bot_matrix_reminder_bot_enabled else []) + ([{ 'name': 'matrix-bot-maubot.service', 'priority': 2200, - 'restart_necessary': true, + 'restart_necessary': (matrix_bot_maubot_restart_necessary | bool), 'groups': ['matrix', 'bots', 'maubot', 'bot-maubot'], }] if matrix_bot_maubot_enabled else []) + ([{ 'name': 'matrix-bot-mjolnir.service', 'priority': 4000, - 'restart_necessary': true, + 'restart_necessary': (matrix_bot_mjolnir_restart_necessary | bool), 'groups': ['matrix', 'bots', 'mjolnir', 'bot-mjolnir'], }] if matrix_bot_mjolnir_enabled else []) + ([{ 'name': 'matrix-bot-draupnir.service', 'priority': 4000, - 'restart_necessary': true, + 'restart_necessary': (matrix_bot_draupnir_restart_necessary | bool), 'groups': ['matrix', 'bots', 'draupnir', 'bot-draupnir'], }] if matrix_bot_draupnir_enabled else []) + ([{ 'name': 'matrix-appservice-discord.service', 'priority': 2000, - 'restart_necessary': true, + 'restart_necessary': (matrix_appservice_discord_restart_necessary | bool), 'groups': ['matrix', 'bridges', 'appservice-discord'], }] if matrix_appservice_discord_enabled else []) + @@ -381,7 +381,7 @@ devture_systemd_service_manager_services_list_auto: | ([{ 'name': 'matrix-appservice-irc.service', 'priority': 2000, - 'restart_necessary': true, + 'restart_necessary': (matrix_appservice_irc_restart_necessary | bool), 'groups': ['matrix', 'bridges', 'appservice-irc'], }] if matrix_appservice_irc_enabled else []) + @@ -402,14 +402,14 @@ devture_systemd_service_manager_services_list_auto: | ([{ 'name': 'matrix-appservice-slack.service', 'priority': 2000, - 'restart_necessary': true, + 'restart_necessary': (matrix_appservice_slack_restart_necessary | bool), 'groups': ['matrix', 'bridges', 'appservice-slack'], }] if matrix_appservice_slack_enabled else []) + ([{ 'name': 'matrix-beeper-linkedin.service', 'priority': 2000, - 'restart_necessary': true, + 'restart_necessary': (matrix_beeper_linkedin_restart_necessary | bool), 'groups': ['matrix', 'bridges', 'beeper-linkedin'], }] if matrix_beeper_linkedin_enabled else []) + @@ -430,91 +430,91 @@ devture_systemd_service_manager_services_list_auto: | ([{ 'name': 'matrix-heisenbridge.service', 'priority': 2000, - 'restart_necessary': true, + 'restart_necessary': (matrix_heisenbridge_restart_necessary | bool), 'groups': ['matrix', 'bridges', 'heisenbridge'], }] if matrix_heisenbridge_enabled else []) + ([{ 'name': 'matrix-hookshot.service', 'priority': 2000, - 'restart_necessary': true, + 'restart_necessary': (matrix_hookshot_restart_necessary | bool), 'groups': ['matrix', 'bridges', 'hookshot', 'bridge-hookshot'], }] if matrix_hookshot_enabled else []) + ([{ 'name': 'matrix-mautrix-bluesky.service', 'priority': 2000, - 'restart_necessary': true, + 'restart_necessary': (matrix_mautrix_bluesky_restart_necessary | bool), 'groups': ['matrix', 'bridges', 'mautrix-bluesky'], }] if matrix_mautrix_bluesky_enabled else []) + ([{ 'name': 'matrix-mautrix-discord.service', 'priority': 2000, - 'restart_necessary': true, + 'restart_necessary': (matrix_mautrix_discord_restart_necessary | bool), 'groups': ['matrix', 'bridges', 'mautrix-discord'], }] if matrix_mautrix_discord_enabled else []) + ([{ 'name': 'matrix-mautrix-slack.service', 'priority': 2000, - 'restart_necessary': true, + 'restart_necessary': (matrix_mautrix_slack_restart_necessary | bool), 'groups': ['matrix', 'bridges', 'mautrix-slack'], }] if matrix_mautrix_slack_enabled else []) + ([{ 'name': 'matrix-mautrix-googlechat.service', 'priority': 2000, - 'restart_necessary': true, + 'restart_necessary': (matrix_mautrix_googlechat_restart_necessary | bool), 'groups': ['matrix', 'bridges', 'mautrix-googlechat'], }] if matrix_mautrix_googlechat_enabled else []) + ([{ 'name': 'matrix-mautrix-signal.service', 'priority': 2000, - 'restart_necessary': true, + 'restart_necessary': (matrix_mautrix_signal_restart_necessary | bool), 'groups': ['matrix', 'bridges', 'mautrix-signal', 'mautrix-signal'], }] if matrix_mautrix_signal_enabled else []) + ([{ 'name': (matrix_mautrix_meta_messenger_identifier + '.service'), 'priority': 2000, - 'restart_necessary': true, + 'restart_necessary': (matrix_mautrix_meta_messenger_restart_necessary | bool), 'groups': ['matrix', 'bridges', 'mautrix-meta', 'mautrix-meta-messenger'], }] if matrix_mautrix_meta_messenger_enabled else []) + ([{ 'name': (matrix_mautrix_meta_instagram_identifier + '.service'), 'priority': 2000, - 'restart_necessary': true, + 'restart_necessary': (matrix_mautrix_meta_instagram_restart_necessary | bool), 'groups': ['matrix', 'bridges', 'mautrix-meta', 'mautrix-meta-instagram'], }] if matrix_mautrix_meta_instagram_enabled else []) + ([{ 'name': 'matrix-mautrix-telegram.service', 'priority': 2000, - 'restart_necessary': true, + 'restart_necessary': (matrix_mautrix_telegram_restart_necessary | bool), 'groups': ['matrix', 'bridges', 'mautrix-telegram'], }] if matrix_mautrix_telegram_enabled else []) + ([{ 'name': 'matrix-mautrix-twitter.service', 'priority': 2000, - 'restart_necessary': true, + 'restart_necessary': (matrix_mautrix_twitter_restart_necessary | bool), 'groups': ['matrix', 'bridges', 'mautrix-twitter'], }] if matrix_mautrix_twitter_enabled else []) + ([{ 'name': 'matrix-mautrix-gmessages.service', 'priority': 2000, - 'restart_necessary': true, + 'restart_necessary': (matrix_mautrix_gmessages_restart_necessary | bool), 'groups': ['matrix', 'bridges', 'mautrix-gmessages'], }] if matrix_mautrix_gmessages_enabled else []) + ([{ 'name': 'matrix-mautrix-whatsapp.service', 'priority': 2000, - 'restart_necessary': true, + 'restart_necessary': (matrix_mautrix_whatsapp_restart_necessary | bool), 'groups': ['matrix', 'bridges', 'mautrix-whatsapp'], }] if matrix_mautrix_whatsapp_enabled else []) + @@ -535,35 +535,35 @@ devture_systemd_service_manager_services_list_auto: | ([{ 'name': 'matrix-mx-puppet-groupme.service', 'priority': 2000, - 'restart_necessary': true, + 'restart_necessary': (matrix_mx_puppet_groupme_restart_necessary | bool), 'groups': ['matrix', 'bridges', 'mx-puppet-groupme'], }] if matrix_mx_puppet_groupme_enabled else []) + ([{ 'name': 'matrix-mx-puppet-steam.service', 'priority': 2000, - 'restart_necessary': true, + 'restart_necessary': (matrix_mx_puppet_steam_restart_necessary | bool), 'groups': ['matrix', 'bridges', 'mx-puppet-steam'], }] if matrix_mx_puppet_steam_enabled else []) + ([{ 'name': 'matrix-postmoogle.service', 'priority': 2200, - 'restart_necessary': true, + 'restart_necessary': (matrix_postmoogle_restart_necessary | bool), 'groups': ['matrix', 'bridges', 'postmoogle'], }] if matrix_postmoogle_enabled else []) + ([{ 'name': 'matrix-sms-bridge.service', 'priority': 2000, - 'restart_necessary': true, + 'restart_necessary': (matrix_sms_bridge_restart_necessary | bool), 'groups': ['matrix', 'bridges', 'sms'], }] if matrix_sms_bridge_enabled else []) + ([{ 'name': 'matrix-steam-bridge.service', 'priority': 2000, - 'restart_necessary': true, + 'restart_necessary': (matrix_steam_bridge_restart_necessary | bool), 'groups': ['matrix', 'bridges', 'matrix-steam-bridge'], }] if matrix_steam_bridge_enabled else []) + @@ -591,7 +591,7 @@ devture_systemd_service_manager_services_list_auto: | ([{ 'name': 'matrix-client-element.service', 'priority': 2000, - 'restart_necessary': true, + 'restart_necessary': (matrix_client_element_restart_necessary | bool), 'groups': ['matrix', 'clients', 'element', 'client-element'], }] if matrix_client_element_enabled else []) + @@ -605,14 +605,14 @@ devture_systemd_service_manager_services_list_auto: | ([{ 'name': 'matrix-client-schildichat.service', 'priority': 2000, - 'restart_necessary': true, + 'restart_necessary': (matrix_client_schildichat_restart_necessary | bool), 'groups': ['matrix', 'clients', 'schildichat', 'client-schildichat'], }] if matrix_client_schildichat_enabled else []) + ([{ 'name': 'matrix-client-fluffychat.service', 'priority': 2000, - 'restart_necessary': true, + 'restart_necessary': (matrix_client_fluffychat_restart_necessary | bool), 'groups': ['matrix', 'clients', 'fluffychat', 'client-fluffychat'], }] if matrix_client_fluffychat_enabled else []) + diff --git a/roles/custom/matrix-bot-baibot/defaults/main.yml b/roles/custom/matrix-bot-baibot/defaults/main.yml index 199806201..96acfdc74 100644 --- a/roles/custom/matrix-bot-baibot/defaults/main.yml +++ b/roles/custom/matrix-bot-baibot/defaults/main.yml @@ -523,3 +523,13 @@ matrix_bot_baibot_configuration_extension: "{{ matrix_bot_baibot_configuration_e # matrix_bot_baibot_environment_variables_extension: | # BAIBOT_USER_PASSWORD=password matrix_bot_baibot_environment_variables_extension: '' + +# matrix_bot_baibot_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_bot_baibot_restart_necessary: false diff --git a/roles/custom/matrix-bot-baibot/tasks/install.yml b/roles/custom/matrix-bot-baibot/tasks/install.yml index 13a13e797..05bb6a8df 100644 --- a/roles/custom/matrix-bot-baibot/tasks/install.yml +++ b/roles/custom/matrix-bot-baibot/tasks/install.yml @@ -26,6 +26,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_bot_baibot_config_result - name: Ensure baibot environment variables file created ansible.builtin.template: @@ -34,6 +35,7 @@ owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" mode: 0640 + register: matrix_bot_baibot_env_result - name: Ensure baibot container image is pulled community.docker.docker_image: @@ -42,10 +44,10 @@ force_source: "{{ matrix_bot_baibot_container_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_bot_baibot_container_image_force_pull }}" when: "not matrix_bot_baibot_container_image_self_build | bool" - register: result + register: matrix_bot_baibot_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_bot_baibot_container_image_pull_result is not failed - when: "matrix_bot_baibot_container_image_self_build | bool" block: @@ -82,3 +84,14 @@ src: "{{ role_path }}/templates/systemd/matrix-bot-baibot.service.j2" dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-bot-baibot.service" mode: 0644 + register: matrix_bot_baibot_systemd_service_result + +- name: Determine whether baibot needs a restart + ansible.builtin.set_fact: + matrix_bot_baibot_restart_necessary: >- + {{ + matrix_bot_baibot_config_result.changed | default(false) + or matrix_bot_baibot_env_result.changed | default(false) + or matrix_bot_baibot_systemd_service_result.changed | default(false) + or matrix_bot_baibot_container_image_pull_result.changed | default(false) + }} diff --git a/roles/custom/matrix-bot-buscarron/defaults/main.yml b/roles/custom/matrix-bot-buscarron/defaults/main.yml index bf715808c..0586f19c5 100644 --- a/roles/custom/matrix-bot-buscarron/defaults/main.yml +++ b/roles/custom/matrix-bot-buscarron/defaults/main.yml @@ -201,3 +201,13 @@ matrix_bot_buscarron_smtp_validation: false # matrix_bot_buscarron_environment_variables_extension: | # BUSCARRON_LOGLEVEL=DEBUG matrix_bot_buscarron_environment_variables_extension: '' + +# matrix_bot_buscarron_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_bot_buscarron_restart_necessary: false diff --git a/roles/custom/matrix-bot-buscarron/tasks/setup_install.yml b/roles/custom/matrix-bot-buscarron/tasks/setup_install.yml index 4279e144e..2cd326f47 100644 --- a/roles/custom/matrix-bot-buscarron/tasks/setup_install.yml +++ b/roles/custom/matrix-bot-buscarron/tasks/setup_install.yml @@ -58,6 +58,7 @@ with_items: - env - labels + register: matrix_bot_buscarron_support_files_result - name: Ensure Buscarron image is pulled community.docker.docker_image: @@ -66,10 +67,10 @@ force_source: "{{ matrix_bot_buscarron_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_bot_buscarron_docker_image_force_pull }}" when: "not matrix_bot_buscarron_container_image_self_build | bool" - register: result + register: matrix_bot_buscarron_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_bot_buscarron_container_image_pull_result is not failed - name: Ensure Buscarron repository is present on self-build ansible.builtin.git: @@ -99,6 +100,17 @@ src: "{{ role_path }}/templates/systemd/matrix-bot-buscarron.service.j2" dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-bot-buscarron.service" mode: 0644 + register: matrix_bot_buscarron_systemd_service_result + +- name: Determine whether Buscarron needs a restart + ansible.builtin.set_fact: + matrix_bot_buscarron_restart_necessary: >- + {{ + matrix_bot_buscarron_migration_requires_restart | default(false) + or matrix_bot_buscarron_support_files_result.changed | default(false) + or matrix_bot_buscarron_systemd_service_result.changed | default(false) + or matrix_bot_buscarron_container_image_pull_result.changed | default(false) + }} - name: Ensure Buscarron container network is created community.general.docker_network: diff --git a/roles/custom/matrix-bot-draupnir/defaults/main.yml b/roles/custom/matrix-bot-draupnir/defaults/main.yml index a4202bba1..618251aca 100644 --- a/roles/custom/matrix-bot-draupnir/defaults/main.yml +++ b/roles/custom/matrix-bot-draupnir/defaults/main.yml @@ -200,3 +200,13 @@ matrix_bot_draupnir_container_labels_web_abuseReporting_traefik_tls_certResolver # my.label=1 # another.label="here" matrix_bot_draupnir_container_labels_traefik_labels_additional_labels: '' + +# matrix_bot_draupnir_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_bot_draupnir_restart_necessary: false diff --git a/roles/custom/matrix-bot-draupnir/tasks/setup_install.yml b/roles/custom/matrix-bot-draupnir/tasks/setup_install.yml index 831e98449..011428fdd 100644 --- a/roles/custom/matrix-bot-draupnir/tasks/setup_install.yml +++ b/roles/custom/matrix-bot-draupnir/tasks/setup_install.yml @@ -35,6 +35,7 @@ with_items: - src: "{{ role_path }}/templates/labels.j2" dest: "{{ matrix_bot_draupnir_base_path }}/labels" + register: matrix_bot_draupnir_support_files_result - name: Ensure Draupnir Docker image is pulled community.docker.docker_image: @@ -43,10 +44,10 @@ force_source: "{{ matrix_bot_draupnir_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_bot_draupnir_docker_image_force_pull }}" when: "not matrix_bot_draupnir_container_image_self_build | bool" - register: result + register: matrix_bot_draupnir_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_bot_draupnir_container_image_pull_result is not failed - name: Ensure Draupnir repository is present on self-build ansible.builtin.git: @@ -77,6 +78,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_bot_draupnir_config_result - name: Ensure matrix-bot-draupnir container network is created community.general.docker_network: @@ -92,6 +94,17 @@ mode: 0644 register: matrix_bot_draupnir_systemd_service_result +- name: Determine whether Draupnir needs a restart + ansible.builtin.set_fact: + matrix_bot_draupnir_restart_necessary: >- + {{ + matrix_bot_draupnir_migration_requires_restart | default(false) + or matrix_bot_draupnir_support_files_result.changed | default(false) + or matrix_bot_draupnir_config_result.changed | default(false) + or matrix_bot_draupnir_systemd_service_result.changed | default(false) + or matrix_bot_draupnir_container_image_pull_result.changed | default(false) + }} + - name: Ensure matrix-bot-draupnir.service restarted, if necessary ansible.builtin.service: name: "matrix-bot-draupnir.service" diff --git a/roles/custom/matrix-bot-go-neb/defaults/main.yml b/roles/custom/matrix-bot-go-neb/defaults/main.yml index da0d5d581..556bb39dd 100644 --- a/roles/custom/matrix-bot-go-neb/defaults/main.yml +++ b/roles/custom/matrix-bot-go-neb/defaults/main.yml @@ -353,3 +353,13 @@ matrix_bot_go_neb_configuration_extension: "{{ matrix_bot_go_neb_configuration_e # Holds the final configuration (a combination of the default and its extension). # You most likely don't need to touch this variable. Instead, see `matrix_bot_go_neb_configuration_yaml`. matrix_bot_go_neb_configuration: "{{ matrix_bot_go_neb_configuration_yaml | from_yaml | combine(matrix_bot_go_neb_configuration_extension, recursive=True) }}" + +# matrix_bot_go_neb_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_bot_go_neb_restart_necessary: false diff --git a/roles/custom/matrix-bot-go-neb/tasks/install.yml b/roles/custom/matrix-bot-go-neb/tasks/install.yml index 54cdec680..de0a901e7 100644 --- a/roles/custom/matrix-bot-go-neb/tasks/install.yml +++ b/roles/custom/matrix-bot-go-neb/tasks/install.yml @@ -30,6 +30,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_bot_go_neb_config_result - name: Ensure go-neb support files installed ansible.builtin.template: @@ -41,6 +42,7 @@ with_items: - env - labels + register: matrix_bot_go_neb_support_files_result - name: Ensure go-neb container image is pulled community.docker.docker_image: @@ -48,10 +50,10 @@ source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}" force_source: "{{ matrix_bot_go_neb_container_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_bot_go_neb_container_image_force_pull }}" - register: result + register: matrix_bot_go_neb_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_bot_go_neb_container_image_pull_result is not failed - name: Ensure go-neb container network is created community.general.docker_network: @@ -65,3 +67,14 @@ src: "{{ role_path }}/templates/systemd/matrix-bot-go-neb.service.j2" dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-bot-go-neb.service" mode: 0644 + register: matrix_bot_go_neb_systemd_service_result + +- name: Determine whether go-neb needs a restart + ansible.builtin.set_fact: + matrix_bot_go_neb_restart_necessary: >- + {{ + matrix_bot_go_neb_config_result.changed | default(false) + or matrix_bot_go_neb_support_files_result.changed | default(false) + or matrix_bot_go_neb_systemd_service_result.changed | default(false) + or matrix_bot_go_neb_container_image_pull_result.changed | default(false) + }} diff --git a/roles/custom/matrix-bot-honoroit/defaults/main.yml b/roles/custom/matrix-bot-honoroit/defaults/main.yml index 0374002e4..637242b95 100644 --- a/roles/custom/matrix-bot-honoroit/defaults/main.yml +++ b/roles/custom/matrix-bot-honoroit/defaults/main.yml @@ -231,3 +231,13 @@ matrix_bot_honoroit_text_done: '' # matrix_bot_honoroit_environment_variables_extension: | # HONOROIT_TEXT_DONE=Done matrix_bot_honoroit_environment_variables_extension: '' + +# matrix_bot_honoroit_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_bot_honoroit_restart_necessary: false diff --git a/roles/custom/matrix-bot-honoroit/tasks/setup_install.yml b/roles/custom/matrix-bot-honoroit/tasks/setup_install.yml index db908210d..5d97368e4 100644 --- a/roles/custom/matrix-bot-honoroit/tasks/setup_install.yml +++ b/roles/custom/matrix-bot-honoroit/tasks/setup_install.yml @@ -60,6 +60,7 @@ with_items: - env - labels + register: matrix_bot_honoroit_support_files_result - name: Ensure Honoroit image is pulled community.docker.docker_image: @@ -68,10 +69,10 @@ force_source: "{{ matrix_bot_honoroit_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_bot_honoroit_docker_image_force_pull }}" when: "not matrix_bot_honoroit_container_image_self_build | bool" - register: result + register: matrix_bot_honoroit_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_bot_honoroit_container_image_pull_result is not failed - name: Ensure Honoroit repository is present on self-build ansible.builtin.git: @@ -110,6 +111,16 @@ mode: 0644 register: matrix_bot_honoroit_systemd_service_result +- name: Determine whether Honoroit needs a restart + ansible.builtin.set_fact: + matrix_bot_honoroit_restart_necessary: >- + {{ + matrix_bot_honoroit_migration_requires_restart | default(false) + or matrix_bot_honoroit_support_files_result.changed | default(false) + or matrix_bot_honoroit_systemd_service_result.changed | default(false) + or matrix_bot_honoroit_container_image_pull_result.changed | default(false) + }} + - name: Ensure matrix-bot-honoroit.service restarted, if necessary ansible.builtin.service: name: "matrix-bot-honoroit.service" diff --git a/roles/custom/matrix-bot-matrix-registration-bot/defaults/main.yml b/roles/custom/matrix-bot-matrix-registration-bot/defaults/main.yml index 889ad62c8..1988501f5 100644 --- a/roles/custom/matrix-bot-matrix-registration-bot/defaults/main.yml +++ b/roles/custom/matrix-bot-matrix-registration-bot/defaults/main.yml @@ -75,3 +75,13 @@ matrix_bot_matrix_registration_bot_systemd_required_services_list_custom: [] # List of systemd services that matrix-bot-matrix-registration-bot.service wants matrix_bot_matrix_registration_bot_systemd_wanted_services_list: [] + +# matrix_bot_matrix_registration_bot_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_bot_matrix_registration_bot_restart_necessary: false diff --git a/roles/custom/matrix-bot-matrix-registration-bot/tasks/setup_install.yml b/roles/custom/matrix-bot-matrix-registration-bot/tasks/setup_install.yml index e9956a335..b5d8200f7 100644 --- a/roles/custom/matrix-bot-matrix-registration-bot/tasks/setup_install.yml +++ b/roles/custom/matrix-bot-matrix-registration-bot/tasks/setup_install.yml @@ -28,6 +28,7 @@ owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" mode: 0640 + register: matrix_bot_matrix_registration_bot_config_result - name: Ensure matrix-registration-bot image is pulled community.docker.docker_image: @@ -36,10 +37,10 @@ force_source: "{{ matrix_bot_matrix_registration_bot_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_bot_matrix_registration_bot_docker_image_force_pull }}" when: "not matrix_bot_matrix_registration_bot_container_image_self_build | bool" - register: result + register: matrix_bot_matrix_registration_bot_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_bot_matrix_registration_bot_container_image_pull_result is not failed - when: matrix_bot_matrix_registration_bot_container_image_self_build | bool block: @@ -76,3 +77,13 @@ src: "{{ role_path }}/templates/systemd/matrix-bot-matrix-registration-bot.service.j2" dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-bot-matrix-registration-bot.service" mode: 0644 + register: matrix_bot_matrix_registration_bot_systemd_service_result + +- name: Determine whether matrix-registration-bot needs a restart + ansible.builtin.set_fact: + matrix_bot_matrix_registration_bot_restart_necessary: >- + {{ + matrix_bot_matrix_registration_bot_config_result.changed | default(false) + or matrix_bot_matrix_registration_bot_systemd_service_result.changed | default(false) + or matrix_bot_matrix_registration_bot_container_image_pull_result.changed | default(false) + }} diff --git a/roles/custom/matrix-bot-matrix-reminder-bot/defaults/main.yml b/roles/custom/matrix-bot-matrix-reminder-bot/defaults/main.yml index c53e5a739..a62a40dbc 100644 --- a/roles/custom/matrix-bot-matrix-reminder-bot/defaults/main.yml +++ b/roles/custom/matrix-bot-matrix-reminder-bot/defaults/main.yml @@ -132,3 +132,13 @@ matrix_bot_matrix_reminder_bot_configuration_extension: "{{ matrix_bot_matrix_re # Holds the final configuration (a combination of the default and its extension). # You most likely don't need to touch this variable. Instead, see `matrix_bot_matrix_reminder_bot_configuration_yaml`. matrix_bot_matrix_reminder_bot_configuration: "{{ matrix_bot_matrix_reminder_bot_configuration_yaml | from_yaml | combine(matrix_bot_matrix_reminder_bot_configuration_extension, recursive=True) }}" + +# matrix_bot_matrix_reminder_bot_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_bot_matrix_reminder_bot_restart_necessary: false diff --git a/roles/custom/matrix-bot-matrix-reminder-bot/tasks/setup_install.yml b/roles/custom/matrix-bot-matrix-reminder-bot/tasks/setup_install.yml index 7dc3aaad7..3f0ee96bb 100644 --- a/roles/custom/matrix-bot-matrix-reminder-bot/tasks/setup_install.yml +++ b/roles/custom/matrix-bot-matrix-reminder-bot/tasks/setup_install.yml @@ -59,10 +59,10 @@ force_source: "{{ matrix_bot_matrix_reminder_bot_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_bot_matrix_reminder_bot_docker_image_force_pull }}" when: "not matrix_bot_matrix_reminder_bot_container_image_self_build | bool" - register: result + register: matrix_bot_matrix_reminder_bot_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_bot_matrix_reminder_bot_container_image_pull_result is not failed - name: Ensure matrix-reminder-bot repository is present on self-build ansible.builtin.git: @@ -94,6 +94,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_bot_matrix_reminder_bot_config_result - name: Ensure matrix-reminder-bot container network is created community.general.docker_network: @@ -109,6 +110,16 @@ mode: 0644 register: matrix_bot_matrix_reminder_bot_systemd_service_result +- name: Determine whether matrix-reminder-bot needs a restart + ansible.builtin.set_fact: + matrix_bot_matrix_reminder_bot_restart_necessary: >- + {{ + matrix_bot_matrix_reminder_bot_migration_requires_restart | default(false) + or matrix_bot_matrix_reminder_bot_config_result.changed | default(false) + or matrix_bot_matrix_reminder_bot_systemd_service_result.changed | default(false) + or matrix_bot_matrix_reminder_bot_container_image_pull_result.changed | default(false) + }} + - name: Ensure matrix-bot-matrix-reminder-bot.service restarted, if necessary ansible.builtin.service: name: "matrix-bot-matrix-reminder-bot.service" diff --git a/roles/custom/matrix-bot-maubot/defaults/main.yml b/roles/custom/matrix-bot-maubot/defaults/main.yml index a7ea31e90..28802b615 100644 --- a/roles/custom/matrix-bot-maubot/defaults/main.yml +++ b/roles/custom/matrix-bot-maubot/defaults/main.yml @@ -180,3 +180,13 @@ matrix_bot_maubot_systemd_required_services_list_custom: [] # List of systemd services that matrix-bot-maubot.service wants matrix_bot_maubot_systemd_wanted_services_list: [] + +# matrix_bot_maubot_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_bot_maubot_restart_necessary: false diff --git a/roles/custom/matrix-bot-maubot/tasks/setup_install.yml b/roles/custom/matrix-bot-maubot/tasks/setup_install.yml index 75f710ad0..61caf984d 100644 --- a/roles/custom/matrix-bot-maubot/tasks/setup_install.yml +++ b/roles/custom/matrix-bot-maubot/tasks/setup_install.yml @@ -34,6 +34,7 @@ owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" mode: "u=rwx" + register: matrix_bot_maubot_config_result - name: Ensure maubot image is pulled community.docker.docker_image: @@ -42,10 +43,10 @@ force_source: "{{ matrix_bot_maubot_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_bot_maubot_docker_image_force_pull }}" when: "not matrix_bot_maubot_container_image_self_build|bool" - register: result + register: matrix_bot_maubot_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_bot_maubot_container_image_pull_result is not failed - when: matrix_bot_maubot_container_image_self_build | bool block: @@ -100,6 +101,7 @@ group: "{{ matrix_group_name }}" with_items: - labels + register: matrix_bot_maubot_support_files_result - name: Ensure maubot container network is created community.general.docker_network: @@ -113,3 +115,14 @@ src: "{{ role_path }}/templates/systemd/matrix-bot-maubot.service.j2" dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-bot-maubot.service" mode: 0644 + register: matrix_bot_maubot_systemd_service_result + +- name: Determine whether maubot needs a restart + ansible.builtin.set_fact: + matrix_bot_maubot_restart_necessary: >- + {{ + matrix_bot_maubot_config_result.changed | default(false) + or matrix_bot_maubot_support_files_result.changed | default(false) + or matrix_bot_maubot_systemd_service_result.changed | default(false) + or matrix_bot_maubot_container_image_pull_result.changed | default(false) + }} diff --git a/roles/custom/matrix-bot-mjolnir/defaults/main.yml b/roles/custom/matrix-bot-mjolnir/defaults/main.yml index 317876625..8477e5a57 100644 --- a/roles/custom/matrix-bot-mjolnir/defaults/main.yml +++ b/roles/custom/matrix-bot-mjolnir/defaults/main.yml @@ -100,3 +100,13 @@ matrix_bot_mjolnir_configuration_extension: "{{ matrix_bot_mjolnir_configuration # Holds the final configuration (a combination of the default and its extension). # You most likely don't need to touch this variable. Instead, see `matrix_bot_mjolnir_configuration_yaml`. matrix_bot_mjolnir_configuration: "{{ matrix_bot_mjolnir_configuration_yaml | from_yaml | combine(matrix_bot_mjolnir_configuration_extension, recursive=True) }}" + +# matrix_bot_mjolnir_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_bot_mjolnir_restart_necessary: false diff --git a/roles/custom/matrix-bot-mjolnir/tasks/setup_install.yml b/roles/custom/matrix-bot-mjolnir/tasks/setup_install.yml index df4fc607c..25da348f0 100644 --- a/roles/custom/matrix-bot-mjolnir/tasks/setup_install.yml +++ b/roles/custom/matrix-bot-mjolnir/tasks/setup_install.yml @@ -34,10 +34,10 @@ force_source: "{{ matrix_bot_mjolnir_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_bot_mjolnir_docker_image_force_pull }}" when: "not matrix_bot_mjolnir_container_image_self_build | bool" - register: result + register: matrix_bot_mjolnir_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_bot_mjolnir_container_image_pull_result is not failed - name: Ensure mjolnir repository is present on self-build ansible.builtin.git: @@ -68,6 +68,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_bot_mjolnir_config_result - name: Ensure matrix-bot-mjolnir container network is created community.general.docker_network: @@ -83,6 +84,16 @@ mode: 0644 register: matrix_bot_mjolnir_systemd_service_result +- name: Determine whether Mjolnir needs a restart + ansible.builtin.set_fact: + matrix_bot_mjolnir_restart_necessary: >- + {{ + matrix_bot_mjolnir_migration_requires_restart | default(false) + or matrix_bot_mjolnir_config_result.changed | default(false) + or matrix_bot_mjolnir_systemd_service_result.changed | default(false) + or matrix_bot_mjolnir_container_image_pull_result.changed | default(false) + }} + - name: Ensure matrix-bot-mjolnir.service restarted, if necessary ansible.builtin.service: name: "matrix-bot-mjolnir.service" diff --git a/roles/custom/matrix-bridge-appservice-discord/defaults/main.yml b/roles/custom/matrix-bridge-appservice-discord/defaults/main.yml index 8a2d35c78..59faf0261 100644 --- a/roles/custom/matrix-bridge-appservice-discord/defaults/main.yml +++ b/roles/custom/matrix-bridge-appservice-discord/defaults/main.yml @@ -137,3 +137,13 @@ matrix_appservice_discord_registration_yaml: | - discord matrix_appservice_discord_registration: "{{ matrix_appservice_discord_registration_yaml | from_yaml }}" + +# matrix_appservice_discord_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_appservice_discord_restart_necessary: false diff --git a/roles/custom/matrix-bridge-appservice-discord/tasks/setup_install.yml b/roles/custom/matrix-bridge-appservice-discord/tasks/setup_install.yml index a6bd84fc9..749b278b2 100644 --- a/roles/custom/matrix-bridge-appservice-discord/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-appservice-discord/tasks/setup_install.yml @@ -46,10 +46,10 @@ source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}" force_source: "{{ matrix_appservice_discord_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_appservice_discord_docker_image_force_pull }}" - register: result + register: matrix_appservice_discord_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_appservice_discord_container_image_pull_result is not failed - name: Ensure AppService Discord paths exist ansible.builtin.file: @@ -95,6 +95,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_appservice_discord_config_result - name: Ensure AppService Discord registration.yaml installed ansible.builtin.copy: @@ -103,6 +104,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_appservice_discord_registration_result # If `matrix_appservice_discord_client_id` hasn't changed, the same invite link would be generated. # We intentionally suppress Ansible changes. @@ -131,6 +133,17 @@ mode: 0644 register: matrix_appservice_discord_systemd_service_result +- name: Determine whether matrix-appservice-discord needs a restart + ansible.builtin.set_fact: + matrix_appservice_discord_restart_necessary: >- + {{ + matrix_appservice_discord_migration_requires_restart | default(false) + or matrix_appservice_discord_config_result.changed | default(false) + or matrix_appservice_discord_registration_result.changed | default(false) + or matrix_appservice_discord_systemd_service_result.changed | default(false) + or matrix_appservice_discord_container_image_pull_result.changed | default(false) + }} + - name: Ensure matrix-appservice-discord.service restarted, if necessary ansible.builtin.service: name: "matrix-appservice-discord.service" diff --git a/roles/custom/matrix-bridge-appservice-irc/defaults/main.yml b/roles/custom/matrix-bridge-appservice-irc/defaults/main.yml index b11bac386..6f05c3313 100644 --- a/roles/custom/matrix-bridge-appservice-irc/defaults/main.yml +++ b/roles/custom/matrix-bridge-appservice-irc/defaults/main.yml @@ -549,3 +549,13 @@ matrix_appservice_irc_registration_override_yaml: | hs_token: "{{ matrix_appservice_irc_homeserver_token }}" matrix_appservice_irc_registration_override: "{{ matrix_appservice_irc_registration_override_yaml | from_yaml }}" + +# matrix_appservice_irc_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_appservice_irc_restart_necessary: false diff --git a/roles/custom/matrix-bridge-appservice-irc/tasks/setup_install.yml b/roles/custom/matrix-bridge-appservice-irc/tasks/setup_install.yml index 86e5ef025..492a5d7fd 100644 --- a/roles/custom/matrix-bridge-appservice-irc/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-appservice-irc/tasks/setup_install.yml @@ -86,10 +86,10 @@ force_source: "{{ matrix_appservice_irc_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_appservice_irc_docker_image_force_pull }}" when: "matrix_appservice_irc_enabled | bool and not matrix_appservice_irc_container_image_self_build | bool" - register: result + register: matrix_appservice_irc_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_appservice_irc_container_image_pull_result is not failed - name: Ensure matrix-appservice-irc repository is present when self-building ansible.builtin.git: @@ -121,6 +121,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_appservice_irc_config_result - name: Ensure Matrix Appservice IRC labels file installed ansible.builtin.template: @@ -129,6 +130,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_appservice_irc_labels_result - name: Generate Appservice IRC passkey if it doesn't exist ansible.builtin.shell: @@ -244,6 +246,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_appservice_irc_registration_result - name: Ensure matrix-appservice-irc container network is created community.general.docker_network: @@ -259,6 +262,18 @@ mode: 0644 register: matrix_appservice_irc_systemd_service_result +- name: Determine whether matrix-appservice-irc needs a restart + ansible.builtin.set_fact: + matrix_appservice_irc_restart_necessary: >- + {{ + matrix_appservice_irc_migration_requires_restart | default(false) + or matrix_appservice_irc_config_result.changed | default(false) + or matrix_appservice_irc_labels_result.changed | default(false) + or matrix_appservice_irc_registration_result.changed | default(false) + or matrix_appservice_irc_systemd_service_result.changed | default(false) + or matrix_appservice_irc_container_image_pull_result.changed | default(false) + }} + - name: Ensure matrix-appservice-irc.service restarted, if necessary ansible.builtin.service: name: "matrix-appservice-irc.service" diff --git a/roles/custom/matrix-bridge-appservice-slack/defaults/main.yml b/roles/custom/matrix-bridge-appservice-slack/defaults/main.yml index 4a8eb2dc7..713d4ac03 100644 --- a/roles/custom/matrix-bridge-appservice-slack/defaults/main.yml +++ b/roles/custom/matrix-bridge-appservice-slack/defaults/main.yml @@ -196,3 +196,13 @@ matrix_appservice_slack_registration_yaml: | protocols: null matrix_appservice_slack_registration: "{{ matrix_appservice_slack_registration_yaml | from_yaml }}" + +# matrix_appservice_slack_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_appservice_slack_restart_necessary: false diff --git a/roles/custom/matrix-bridge-appservice-slack/tasks/setup_install.yml b/roles/custom/matrix-bridge-appservice-slack/tasks/setup_install.yml index 0e02c67ac..704dc25b8 100644 --- a/roles/custom/matrix-bridge-appservice-slack/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-appservice-slack/tasks/setup_install.yml @@ -50,10 +50,10 @@ force_source: "{{ matrix_appservice_slack_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_appservice_slack_docker_image_force_pull }}" when: "not matrix_appservice_slack_container_image_self_build | bool" - register: result + register: matrix_appservice_slack_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_appservice_slack_container_image_pull_result is not failed - name: Ensure matrix-appservice-slack repository is present when self-building ansible.builtin.git: @@ -85,6 +85,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_appservice_slack_config_result - name: Ensure appservice-slack registration.yaml installed ansible.builtin.copy: @@ -93,6 +94,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_appservice_slack_registration_result - name: Ensure matrix-appservice-slack container network is created community.general.docker_network: @@ -110,12 +112,26 @@ group: "{{ matrix_group_name }}" with_items: - labels + register: matrix_appservice_slack_support_files_result - name: Ensure matrix-appservice-slack.service installed ansible.builtin.template: src: "{{ role_path }}/templates/systemd/matrix-appservice-slack.service.j2" dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-appservice-slack.service" mode: 0644 + register: matrix_appservice_slack_systemd_service_result + +- name: Determine whether matrix-appservice-slack needs a restart + ansible.builtin.set_fact: + matrix_appservice_slack_restart_necessary: >- + {{ + matrix_appservice_slack_migration_requires_restart | default(false) + or matrix_appservice_slack_config_result.changed | default(false) + or matrix_appservice_slack_registration_result.changed | default(false) + or matrix_appservice_slack_support_files_result.changed | default(false) + or matrix_appservice_slack_systemd_service_result.changed | default(false) + or matrix_appservice_slack_container_image_pull_result.changed | default(false) + }} - name: Ensure matrix-appservice-slack.service restarted, if necessary ansible.builtin.service: diff --git a/roles/custom/matrix-bridge-beeper-linkedin/defaults/main.yml b/roles/custom/matrix-bridge-beeper-linkedin/defaults/main.yml index 5fc9a2c40..a0f9c1885 100644 --- a/roles/custom/matrix-bridge-beeper-linkedin/defaults/main.yml +++ b/roles/custom/matrix-bridge-beeper-linkedin/defaults/main.yml @@ -173,3 +173,13 @@ matrix_beeper_linkedin_registration_yaml: | receive_ephemeral: true matrix_beeper_linkedin_registration: "{{ matrix_beeper_linkedin_registration_yaml | from_yaml }}" + +# matrix_beeper_linkedin_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_beeper_linkedin_restart_necessary: false diff --git a/roles/custom/matrix-bridge-beeper-linkedin/tasks/setup_install.yml b/roles/custom/matrix-bridge-beeper-linkedin/tasks/setup_install.yml index 5149ddf13..4a417942e 100644 --- a/roles/custom/matrix-bridge-beeper-linkedin/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-beeper-linkedin/tasks/setup_install.yml @@ -32,6 +32,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_beeper_linkedin_config_result - name: Ensure beeper-linkedin registration.yaml installed ansible.builtin.copy: @@ -40,6 +41,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_beeper_linkedin_registration_result - name: Ensure Beeper LinkedIn container image is pulled community.docker.docker_image: @@ -48,10 +50,10 @@ force_source: "{{ matrix_beeper_linkedin_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_beeper_linkedin_docker_image_force_pull }}" when: "not matrix_beeper_linkedin_container_image_self_build | bool" - register: result + register: matrix_beeper_linkedin_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_beeper_linkedin_container_image_pull_result is not failed - when: "matrix_beeper_linkedin_container_image_self_build | bool" block: @@ -105,3 +107,14 @@ src: "{{ role_path }}/templates/systemd/matrix-beeper-linkedin.service.j2" dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-beeper-linkedin.service" mode: 0644 + register: matrix_beeper_linkedin_systemd_service_result + +- name: Determine whether matrix-beeper-linkedin needs a restart + ansible.builtin.set_fact: + matrix_beeper_linkedin_restart_necessary: >- + {{ + matrix_beeper_linkedin_config_result.changed | default(false) + or matrix_beeper_linkedin_registration_result.changed | default(false) + or matrix_beeper_linkedin_systemd_service_result.changed | default(false) + or matrix_beeper_linkedin_container_image_pull_result.changed | default(false) + }} diff --git a/roles/custom/matrix-bridge-heisenbridge/defaults/main.yml b/roles/custom/matrix-bridge-heisenbridge/defaults/main.yml index b1248df8f..5a313bdf3 100644 --- a/roles/custom/matrix-bridge-heisenbridge/defaults/main.yml +++ b/roles/custom/matrix-bridge-heisenbridge/defaults/main.yml @@ -123,3 +123,13 @@ matrix_heisenbridge_registration_yaml: heisenbridge: "{{ matrix_heisenbridge_registration_yaml_heisenbridge }}" matrix_heisenbridge_registration: "{{ matrix_heisenbridge_registration_yaml | from_yaml }}" + +# matrix_heisenbridge_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_heisenbridge_restart_necessary: false diff --git a/roles/custom/matrix-bridge-heisenbridge/tasks/setup_install.yml b/roles/custom/matrix-bridge-heisenbridge/tasks/setup_install.yml index cbc99b51e..4a634426d 100644 --- a/roles/custom/matrix-bridge-heisenbridge/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-heisenbridge/tasks/setup_install.yml @@ -16,10 +16,10 @@ source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}" force_source: "{{ matrix_heisenbridge_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_heisenbridge_docker_image_force_pull }}" - register: result + register: matrix_heisenbridge_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_heisenbridge_container_image_pull_result is not failed - name: Ensure Heisenbridge paths exist ansible.builtin.file: @@ -38,6 +38,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_heisenbridge_registration_result - name: Ensure Heisenbridge support files installed ansible.builtin.template: @@ -48,6 +49,7 @@ group: "{{ matrix_group_name }}" with_items: - labels + register: matrix_heisenbridge_support_files_result - name: Ensure Heisenbridge container network is created community.general.docker_network: @@ -61,3 +63,14 @@ src: "{{ role_path }}/templates/systemd/matrix-heisenbridge.service.j2" dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-heisenbridge.service" mode: 0644 + register: matrix_heisenbridge_systemd_service_result + +- name: Determine whether matrix-heisenbridge needs a restart + ansible.builtin.set_fact: + matrix_heisenbridge_restart_necessary: >- + {{ + matrix_heisenbridge_registration_result.changed | default(false) + or matrix_heisenbridge_support_files_result.changed | default(false) + or matrix_heisenbridge_systemd_service_result.changed | default(false) + or matrix_heisenbridge_container_image_pull_result.changed | default(false) + }} diff --git a/roles/custom/matrix-bridge-hookshot/defaults/main.yml b/roles/custom/matrix-bridge-hookshot/defaults/main.yml index 14a4dcc8c..12b93b099 100644 --- a/roles/custom/matrix-bridge-hookshot/defaults/main.yml +++ b/roles/custom/matrix-bridge-hookshot/defaults/main.yml @@ -380,3 +380,13 @@ matrix_hookshot_registration_extension: "{{ matrix_hookshot_registration_extensi # Holds the final registration (a combination of the default and its extension). # You most likely don't need to touch this variable. Instead, see `matrix_hookshot_registration_yaml`. matrix_hookshot_registration: "{{ matrix_hookshot_registration_yaml | from_yaml | combine(matrix_hookshot_registration_extension, recursive=True) }}" + +# matrix_hookshot_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_hookshot_restart_necessary: false diff --git a/roles/custom/matrix-bridge-hookshot/tasks/setup_install.yml b/roles/custom/matrix-bridge-hookshot/tasks/setup_install.yml index 68e5ef920..d0cd45648 100644 --- a/roles/custom/matrix-bridge-hookshot/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-hookshot/tasks/setup_install.yml @@ -35,10 +35,10 @@ force_source: "{{ matrix_hookshot_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_hookshot_docker_image_force_pull }}" when: not matrix_hookshot_container_image_self_build - register: result + register: matrix_hookshot_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_hookshot_container_image_pull_result is not failed - name: Ensure hookshot repository is present on self-build ansible.builtin.git: @@ -83,6 +83,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_hookshot_config_result - name: Validate hookshot config.yml ansible.builtin.command: @@ -109,6 +110,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_hookshot_registration_result - name: Ensure hookshot github private key file installed if github is enabled ansible.builtin.copy: @@ -118,6 +120,7 @@ owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" when: matrix_hookshot_github_enabled | bool and matrix_hookshot_github_private_key|length > 0 + register: matrix_hookshot_github_key_result - name: Ensure matrix-hookshot container network is created community.general.docker_network: @@ -135,9 +138,23 @@ group: "{{ matrix_group_name }}" with_items: - labels + register: matrix_hookshot_support_files_result - name: Ensure matrix-hookshot.service installed ansible.builtin.template: src: "{{ role_path }}/templates/systemd/matrix-hookshot.service.j2" dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-hookshot.service" mode: 0644 + register: matrix_hookshot_systemd_service_result + +- name: Determine whether matrix-hookshot needs a restart + ansible.builtin.set_fact: + matrix_hookshot_restart_necessary: >- + {{ + matrix_hookshot_config_result.changed | default(false) + or matrix_hookshot_registration_result.changed | default(false) + or matrix_hookshot_github_key_result.changed | default(false) + or matrix_hookshot_support_files_result.changed | default(false) + or matrix_hookshot_systemd_service_result.changed | default(false) + or matrix_hookshot_container_image_pull_result.changed | default(false) + }} diff --git a/roles/custom/matrix-bridge-mautrix-bluesky/defaults/main.yml b/roles/custom/matrix-bridge-mautrix-bluesky/defaults/main.yml index d1b63aeb6..20f5eaecc 100644 --- a/roles/custom/matrix-bridge-mautrix-bluesky/defaults/main.yml +++ b/roles/custom/matrix-bridge-mautrix-bluesky/defaults/main.yml @@ -209,3 +209,13 @@ matrix_mautrix_bluesky_bridge_encryption_require: false matrix_mautrix_bluesky_bridge_encryption_appservice: false matrix_mautrix_bluesky_bridge_encryption_key_sharing_allow: "{{ matrix_mautrix_bluesky_bridge_encryption_allow }}" matrix_mautrix_bluesky_bridge_encryption_pickle_key: mautrix.bridge.e2ee + +# matrix_mautrix_bluesky_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_mautrix_bluesky_restart_necessary: false diff --git a/roles/custom/matrix-bridge-mautrix-bluesky/tasks/setup_install.yml b/roles/custom/matrix-bridge-mautrix-bluesky/tasks/setup_install.yml index 584b3f428..6f24d144e 100644 --- a/roles/custom/matrix-bridge-mautrix-bluesky/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-mautrix-bluesky/tasks/setup_install.yml @@ -14,10 +14,10 @@ force_source: "{{ matrix_mautrix_bluesky_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mautrix_bluesky_docker_image_force_pull }}" when: matrix_mautrix_bluesky_enabled | bool and not matrix_mautrix_bluesky_container_image_self_build - register: result + register: matrix_mautrix_bluesky_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_mautrix_bluesky_container_image_pull_result is not failed - name: Ensure Mautrix Bluesky paths exist ansible.builtin.file: @@ -62,6 +62,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_mautrix_bluesky_config_result - name: Ensure mautrix-bluesky registration.yaml installed ansible.builtin.copy: @@ -70,6 +71,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_mautrix_bluesky_registration_result - name: Ensure mautrix-bluesky support files installed ansible.builtin.template: @@ -80,6 +82,7 @@ group: "{{ matrix_group_name }}" with_items: - labels + register: matrix_mautrix_bluesky_support_files_result - name: Ensure matrix-mautrix-bluesky container network is created community.general.docker_network: @@ -93,6 +96,19 @@ src: "{{ role_path }}/templates/systemd/matrix-mautrix-bluesky.service.j2" dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-mautrix-bluesky.service" mode: 0644 + register: matrix_mautrix_bluesky_systemd_service_result + +- name: Determine whether matrix-mautrix-bluesky needs a restart + ansible.builtin.set_fact: + matrix_mautrix_bluesky_restart_necessary: >- + {{ + matrix_mautrix_bluesky_migration_requires_restart | default(false) + or matrix_mautrix_bluesky_config_result.changed | default(false) + or matrix_mautrix_bluesky_registration_result.changed | default(false) + or matrix_mautrix_bluesky_support_files_result.changed | default(false) + or matrix_mautrix_bluesky_systemd_service_result.changed | default(false) + or matrix_mautrix_bluesky_container_image_pull_result.changed | default(false) + }} - name: Ensure matrix-mautrix-bluesky.service restarted, if necessary ansible.builtin.service: diff --git a/roles/custom/matrix-bridge-mautrix-discord/defaults/main.yml b/roles/custom/matrix-bridge-mautrix-discord/defaults/main.yml index 8663ffa44..747fd797d 100644 --- a/roles/custom/matrix-bridge-mautrix-discord/defaults/main.yml +++ b/roles/custom/matrix-bridge-mautrix-discord/defaults/main.yml @@ -245,3 +245,13 @@ matrix_mautrix_discord_bridge_encryption_key_sharing_allow: "{{ matrix_mautrix_d # On Conduit versions before 0.5.0 this option prevented users from joining spaces created by the bridge. # Setting this to false fixed the issue. matrix_mautrix_discord_bridge_restricted_rooms: true + +# matrix_mautrix_discord_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_mautrix_discord_restart_necessary: false diff --git a/roles/custom/matrix-bridge-mautrix-discord/tasks/setup_install.yml b/roles/custom/matrix-bridge-mautrix-discord/tasks/setup_install.yml index fa838ddb3..c98971ab9 100644 --- a/roles/custom/matrix-bridge-mautrix-discord/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-mautrix-discord/tasks/setup_install.yml @@ -56,10 +56,10 @@ force_source: "{{ matrix_mautrix_discord_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mautrix_discord_docker_image_force_pull }}" when: not matrix_mautrix_discord_container_image_self_build - register: result + register: matrix_mautrix_discord_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_mautrix_discord_container_image_pull_result is not failed - name: Ensure Mautrix discord repository is present on self-build ansible.builtin.git: @@ -91,6 +91,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_mautrix_discord_config_result - name: Ensure mautrix-discord registration.yaml installed ansible.builtin.copy: @@ -99,6 +100,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_mautrix_discord_registration_result - name: Ensure mautrix-discord support files installed ansible.builtin.template: @@ -109,6 +111,7 @@ group: "{{ matrix_group_name }}" with_items: - labels + register: matrix_mautrix_discord_support_files_result - name: Ensure mautrix-discord container network is created community.general.docker_network: @@ -124,6 +127,18 @@ mode: 0644 register: matrix_mautrix_discord_systemd_service_result +- name: Determine whether matrix-mautrix-discord needs a restart + ansible.builtin.set_fact: + matrix_mautrix_discord_restart_necessary: >- + {{ + matrix_mautrix_discord_migration_requires_restart | default(false) + or matrix_mautrix_discord_config_result.changed | default(false) + or matrix_mautrix_discord_registration_result.changed | default(false) + or matrix_mautrix_discord_support_files_result.changed | default(false) + or matrix_mautrix_discord_systemd_service_result.changed | default(false) + or matrix_mautrix_discord_container_image_pull_result.changed | default(false) + }} + - name: Ensure matrix-mautrix-discord.service restarted, if necessary ansible.builtin.service: name: "matrix-mautrix-discord.service" diff --git a/roles/custom/matrix-bridge-mautrix-gmessages/defaults/main.yml b/roles/custom/matrix-bridge-mautrix-gmessages/defaults/main.yml index 6b10fd9ac..9558ac429 100644 --- a/roles/custom/matrix-bridge-mautrix-gmessages/defaults/main.yml +++ b/roles/custom/matrix-bridge-mautrix-gmessages/defaults/main.yml @@ -222,3 +222,13 @@ matrix_mautrix_gmessages_registration_yaml: | io.element.msc4190: {{ matrix_mautrix_gmessages_msc4190_enabled | to_json }} matrix_mautrix_gmessages_registration: "{{ matrix_mautrix_gmessages_registration_yaml | from_yaml }}" + +# matrix_mautrix_gmessages_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_mautrix_gmessages_restart_necessary: false diff --git a/roles/custom/matrix-bridge-mautrix-gmessages/tasks/setup_install.yml b/roles/custom/matrix-bridge-mautrix-gmessages/tasks/setup_install.yml index ab783b324..5e52cbd38 100644 --- a/roles/custom/matrix-bridge-mautrix-gmessages/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-mautrix-gmessages/tasks/setup_install.yml @@ -56,10 +56,10 @@ force_source: "{{ matrix_mautrix_gmessages_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mautrix_gmessages_docker_image_force_pull }}" when: not matrix_mautrix_gmessages_container_image_self_build - register: result + register: matrix_mautrix_gmessages_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_mautrix_gmessages_container_image_pull_result is not failed - name: Ensure Mautrix gmessages repository is present on self-build ansible.builtin.git: @@ -124,6 +124,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_mautrix_gmessages_config_result - name: Ensure mautrix-gmessages registration.yaml installed ansible.builtin.copy: @@ -132,12 +133,14 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_mautrix_gmessages_registration_result - name: Ensure matrix-mautrix-gmessages.service installed ansible.builtin.template: src: "{{ role_path }}/templates/systemd/matrix-mautrix-gmessages.service.j2" dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-mautrix-gmessages.service" mode: 0644 + register: matrix_mautrix_gmessages_systemd_service_result - name: Ensure mautrix-gmessages support files installed ansible.builtin.template: @@ -148,6 +151,7 @@ group: "{{ matrix_group_name }}" with_items: - labels + register: matrix_mautrix_gmessages_support_files_result - name: Ensure matrix-mautrix-gmessages container network is created community.general.docker_network: @@ -156,6 +160,18 @@ driver: bridge driver_options: "{{ devture_systemd_docker_base_container_networks_driver_options }}" +- name: Determine whether matrix-mautrix-gmessages needs a restart + ansible.builtin.set_fact: + matrix_mautrix_gmessages_restart_necessary: >- + {{ + matrix_mautrix_gmessages_migration_requires_restart | default(false) + or matrix_mautrix_gmessages_config_result.changed | default(false) + or matrix_mautrix_gmessages_registration_result.changed | default(false) + or matrix_mautrix_gmessages_support_files_result.changed | default(false) + or matrix_mautrix_gmessages_systemd_service_result.changed | default(false) + or matrix_mautrix_gmessages_container_image_pull_result.changed | default(false) + }} + - name: Ensure matrix-mautrix-gmessages.service restarted, if necessary ansible.builtin.service: name: "matrix-mautrix-gmessages.service" diff --git a/roles/custom/matrix-bridge-mautrix-googlechat/defaults/main.yml b/roles/custom/matrix-bridge-mautrix-googlechat/defaults/main.yml index ee0eb4748..83f4255bf 100644 --- a/roles/custom/matrix-bridge-mautrix-googlechat/defaults/main.yml +++ b/roles/custom/matrix-bridge-mautrix-googlechat/defaults/main.yml @@ -206,3 +206,13 @@ matrix_mautrix_googlechat_registration: "{{ matrix_mautrix_googlechat_registrati # Enable End-to-bridge encryption matrix_mautrix_googlechat_bridge_encryption_allow: "{{ matrix_bridges_encryption_enabled }}" matrix_mautrix_googlechat_bridge_encryption_default: "{{ matrix_bridges_encryption_default }}" + +# matrix_mautrix_googlechat_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_mautrix_googlechat_restart_necessary: false diff --git a/roles/custom/matrix-bridge-mautrix-googlechat/tasks/setup_install.yml b/roles/custom/matrix-bridge-mautrix-googlechat/tasks/setup_install.yml index 4d1b27168..944a2470f 100644 --- a/roles/custom/matrix-bridge-mautrix-googlechat/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-mautrix-googlechat/tasks/setup_install.yml @@ -44,10 +44,10 @@ force_source: "{{ matrix_mautrix_googlechat_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mautrix_googlechat_docker_image_force_pull }}" when: not matrix_mautrix_googlechat_container_image_self_build - register: result + register: matrix_mautrix_googlechat_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_mautrix_googlechat_container_image_pull_result is not failed - name: Ensure Mautrix googlechat paths exist ansible.builtin.file: @@ -114,6 +114,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_mautrix_googlechat_config_result - name: Ensure mautrix-googlechat registration.yaml installed ansible.builtin.copy: @@ -122,6 +123,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_mautrix_googlechat_registration_result - name: Ensure mautrix-googlechat support files installed ansible.builtin.template: @@ -132,6 +134,7 @@ group: "{{ matrix_group_name }}" with_items: - labels + register: matrix_mautrix_googlechat_support_files_result - name: Ensure matrix-mautrix-googlechat container network is created community.general.docker_network: @@ -145,6 +148,19 @@ src: "{{ role_path }}/templates/systemd/matrix-mautrix-googlechat.service.j2" dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-mautrix-googlechat.service" mode: 0644 + register: matrix_mautrix_googlechat_systemd_service_result + +- name: Determine whether matrix-mautrix-googlechat needs a restart + ansible.builtin.set_fact: + matrix_mautrix_googlechat_restart_necessary: >- + {{ + matrix_mautrix_googlechat_migration_requires_restart | default(false) + or matrix_mautrix_googlechat_config_result.changed | default(false) + or matrix_mautrix_googlechat_registration_result.changed | default(false) + or matrix_mautrix_googlechat_support_files_result.changed | default(false) + or matrix_mautrix_googlechat_systemd_service_result.changed | default(false) + or matrix_mautrix_googlechat_container_image_pull_result.changed | default(false) + }} - name: Ensure matrix-mautrix-googlechat.service restarted, if necessary ansible.builtin.service: diff --git a/roles/custom/matrix-bridge-mautrix-meta-instagram/defaults/main.yml b/roles/custom/matrix-bridge-mautrix-meta-instagram/defaults/main.yml index 8e7633c68..f5a5dd7f9 100644 --- a/roles/custom/matrix-bridge-mautrix-meta-instagram/defaults/main.yml +++ b/roles/custom/matrix-bridge-mautrix-meta-instagram/defaults/main.yml @@ -307,3 +307,13 @@ matrix_mautrix_meta_instagram_registration_yaml: | io.element.msc4190: {{ matrix_mautrix_meta_instagram_msc4190_enabled | to_json }} matrix_mautrix_meta_instagram_registration: "{{ matrix_mautrix_meta_instagram_registration_yaml | from_yaml }}" + +# matrix_mautrix_meta_instagram_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_mautrix_meta_instagram_restart_necessary: false diff --git a/roles/custom/matrix-bridge-mautrix-meta-instagram/tasks/install.yml b/roles/custom/matrix-bridge-mautrix-meta-instagram/tasks/install.yml index bed4d5cca..bc1eaa4e1 100644 --- a/roles/custom/matrix-bridge-mautrix-meta-instagram/tasks/install.yml +++ b/roles/custom/matrix-bridge-mautrix-meta-instagram/tasks/install.yml @@ -39,10 +39,10 @@ force_source: "{{ matrix_mautrix_meta_instagram_container_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mautrix_meta_instagram_container_image_force_pull }}" when: not matrix_mautrix_meta_instagram_container_image_self_build - register: result + register: matrix_mautrix_meta_instagram_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_mautrix_meta_instagram_container_image_pull_result is not failed - name: Ensure mautrix-meta-instagram paths exist ansible.builtin.file: @@ -88,6 +88,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_mautrix_meta_instagram_config_result - name: Ensure mautrix-meta-instagram registration.yaml installed ansible.builtin.copy: @@ -96,6 +97,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_mautrix_meta_instagram_registration_result - name: Ensure mautrix-meta-instagram support files installed ansible.builtin.template: @@ -106,6 +108,7 @@ group: "{{ matrix_group_name }}" with_items: - labels + register: matrix_mautrix_meta_instagram_support_files_result - name: Ensure mautrix-meta-instagram container network is created community.general.docker_network: @@ -119,6 +122,19 @@ src: "{{ role_path }}/templates/systemd/matrix-mautrix-meta.service.j2" dest: "{{ devture_systemd_docker_base_systemd_path }}/{{ matrix_mautrix_meta_instagram_identifier }}.service" mode: 0644 + register: matrix_mautrix_meta_instagram_systemd_service_result + +- name: Determine whether mautrix-meta-instagram needs a restart + ansible.builtin.set_fact: + matrix_mautrix_meta_instagram_restart_necessary: >- + {{ + matrix_mautrix_meta_instagram_migration_requires_restart | default(false) + or matrix_mautrix_meta_instagram_config_result.changed | default(false) + or matrix_mautrix_meta_instagram_registration_result.changed | default(false) + or matrix_mautrix_meta_instagram_support_files_result.changed | default(false) + or matrix_mautrix_meta_instagram_systemd_service_result.changed | default(false) + or matrix_mautrix_meta_instagram_container_image_pull_result.changed | default(false) + }} - name: Ensure mautrix-meta-instagram.service restarted, if necessary ansible.builtin.service: diff --git a/roles/custom/matrix-bridge-mautrix-meta-messenger/defaults/main.yml b/roles/custom/matrix-bridge-mautrix-meta-messenger/defaults/main.yml index b73fe8be1..f3febcaed 100644 --- a/roles/custom/matrix-bridge-mautrix-meta-messenger/defaults/main.yml +++ b/roles/custom/matrix-bridge-mautrix-meta-messenger/defaults/main.yml @@ -307,3 +307,13 @@ matrix_mautrix_meta_messenger_registration_yaml: | io.element.msc4190: {{ matrix_mautrix_meta_messenger_msc4190_enabled | to_json }} matrix_mautrix_meta_messenger_registration: "{{ matrix_mautrix_meta_messenger_registration_yaml | from_yaml }}" + +# matrix_mautrix_meta_messenger_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_mautrix_meta_messenger_restart_necessary: false diff --git a/roles/custom/matrix-bridge-mautrix-meta-messenger/tasks/install.yml b/roles/custom/matrix-bridge-mautrix-meta-messenger/tasks/install.yml index 7308252a7..9704923f8 100644 --- a/roles/custom/matrix-bridge-mautrix-meta-messenger/tasks/install.yml +++ b/roles/custom/matrix-bridge-mautrix-meta-messenger/tasks/install.yml @@ -39,10 +39,10 @@ force_source: "{{ matrix_mautrix_meta_messenger_container_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mautrix_meta_messenger_container_image_force_pull }}" when: not matrix_mautrix_meta_messenger_container_image_self_build - register: result + register: matrix_mautrix_meta_messenger_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_mautrix_meta_messenger_container_image_pull_result is not failed - name: Ensure mautrix-meta-messenger paths exist ansible.builtin.file: @@ -88,6 +88,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_mautrix_meta_messenger_config_result - name: Ensure mautrix-meta-messenger registration.yaml installed ansible.builtin.copy: @@ -96,6 +97,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_mautrix_meta_messenger_registration_result - name: Ensure mautrix-meta-messenger support files installed ansible.builtin.template: @@ -106,6 +108,7 @@ group: "{{ matrix_group_name }}" with_items: - labels + register: matrix_mautrix_meta_messenger_support_files_result - name: Ensure mautrix-meta-messenger container network is created community.general.docker_network: @@ -119,6 +122,19 @@ src: "{{ role_path }}/templates/systemd/matrix-mautrix-meta.service.j2" dest: "{{ devture_systemd_docker_base_systemd_path }}/{{ matrix_mautrix_meta_messenger_identifier }}.service" mode: 0644 + register: matrix_mautrix_meta_messenger_systemd_service_result + +- name: Determine whether mautrix-meta-messenger needs a restart + ansible.builtin.set_fact: + matrix_mautrix_meta_messenger_restart_necessary: >- + {{ + matrix_mautrix_meta_messenger_migration_requires_restart | default(false) + or matrix_mautrix_meta_messenger_config_result.changed | default(false) + or matrix_mautrix_meta_messenger_registration_result.changed | default(false) + or matrix_mautrix_meta_messenger_support_files_result.changed | default(false) + or matrix_mautrix_meta_messenger_systemd_service_result.changed | default(false) + or matrix_mautrix_meta_messenger_container_image_pull_result.changed | default(false) + }} - name: Ensure mautrix-meta-messenger.service restarted, if necessary ansible.builtin.service: diff --git a/roles/custom/matrix-bridge-mautrix-signal/defaults/main.yml b/roles/custom/matrix-bridge-mautrix-signal/defaults/main.yml index 7d18ad5ff..1839bfbef 100644 --- a/roles/custom/matrix-bridge-mautrix-signal/defaults/main.yml +++ b/roles/custom/matrix-bridge-mautrix-signal/defaults/main.yml @@ -243,3 +243,13 @@ matrix_mautrix_signal_network_note_to_self_avatar: "mxc://maunium.net/REBIVrqjZw matrix_mautrix_signal_provisioning_shared_secret: '' matrix_mautrix_signal_public_media_signing_key: '' + +# matrix_mautrix_signal_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_mautrix_signal_restart_necessary: false diff --git a/roles/custom/matrix-bridge-mautrix-signal/tasks/setup_install.yml b/roles/custom/matrix-bridge-mautrix-signal/tasks/setup_install.yml index 6365190ec..964605308 100644 --- a/roles/custom/matrix-bridge-mautrix-signal/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-mautrix-signal/tasks/setup_install.yml @@ -61,10 +61,10 @@ force_source: "{{ matrix_mautrix_signal_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mautrix_signal_docker_image_force_pull }}" when: not matrix_mautrix_signal_container_image_self_build - register: result + register: matrix_mautrix_signal_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_mautrix_signal_container_image_pull_result is not failed - name: Ensure Mautrix signal repository is present on self-build ansible.builtin.git: @@ -129,6 +129,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_mautrix_signal_config_result - name: Ensure mautrix-signal registration.yaml installed ansible.builtin.copy: @@ -137,6 +138,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_mautrix_signal_registration_result - name: Ensure mautrix-signal support files installed ansible.builtin.template: @@ -147,6 +149,7 @@ group: "{{ matrix_group_name }}" with_items: - labels + register: matrix_mautrix_signal_support_files_result - name: Ensure matrix-mautrix-signal container network is created community.general.docker_network: @@ -160,6 +163,19 @@ src: "{{ role_path }}/templates/systemd/matrix-mautrix-signal.service.j2" dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-mautrix-signal.service" mode: 0644 + register: matrix_mautrix_signal_systemd_service_result + +- name: Determine whether matrix-mautrix-signal needs a restart + ansible.builtin.set_fact: + matrix_mautrix_signal_restart_necessary: >- + {{ + matrix_mautrix_signal_migration_requires_restart | default(false) + or matrix_mautrix_signal_config_result.changed | default(false) + or matrix_mautrix_signal_registration_result.changed | default(false) + or matrix_mautrix_signal_support_files_result.changed | default(false) + or matrix_mautrix_signal_systemd_service_result.changed | default(false) + or matrix_mautrix_signal_container_image_pull_result.changed | default(false) + }} - name: Ensure matrix-mautrix-signal.service restarted, if necessary ansible.builtin.service: diff --git a/roles/custom/matrix-bridge-mautrix-slack/defaults/main.yml b/roles/custom/matrix-bridge-mautrix-slack/defaults/main.yml index 6a455935d..2d7a8b133 100644 --- a/roles/custom/matrix-bridge-mautrix-slack/defaults/main.yml +++ b/roles/custom/matrix-bridge-mautrix-slack/defaults/main.yml @@ -202,3 +202,13 @@ matrix_mautrix_slack_bridge_relay_admin_only: true # List of user login IDs which anyone can set as a relay, as long as the relay user is in the room matrix_mautrix_slack_bridge_relay_default_relays: [] + +# matrix_mautrix_slack_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_mautrix_slack_restart_necessary: false diff --git a/roles/custom/matrix-bridge-mautrix-slack/tasks/setup_install.yml b/roles/custom/matrix-bridge-mautrix-slack/tasks/setup_install.yml index 53e1426e0..1e2073257 100644 --- a/roles/custom/matrix-bridge-mautrix-slack/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-mautrix-slack/tasks/setup_install.yml @@ -55,10 +55,10 @@ force_source: "{{ matrix_mautrix_slack_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mautrix_slack_docker_image_force_pull }}" when: not matrix_mautrix_slack_container_image_self_build - register: result + register: matrix_mautrix_slack_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_mautrix_slack_container_image_pull_result is not failed - name: Ensure Mautrix slack repository is present on self-build ansible.builtin.git: @@ -90,6 +90,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_mautrix_slack_config_result - name: Ensure mautrix-slack registration.yaml installed ansible.builtin.copy: @@ -98,6 +99,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_mautrix_slack_registration_result - name: Ensure matrix-mautrix-slack container network is created community.general.docker_network: @@ -113,6 +115,17 @@ mode: 0644 register: matrix_mautrix_slack_systemd_service_result +- name: Determine whether matrix-mautrix-slack needs a restart + ansible.builtin.set_fact: + matrix_mautrix_slack_restart_necessary: >- + {{ + matrix_mautrix_slack_migration_requires_restart | default(false) + or matrix_mautrix_slack_config_result.changed | default(false) + or matrix_mautrix_slack_registration_result.changed | default(false) + or matrix_mautrix_slack_systemd_service_result.changed | default(false) + or matrix_mautrix_slack_container_image_pull_result.changed | default(false) + }} + - name: Ensure matrix-mautrix-slack.service restarted, if necessary ansible.builtin.service: name: "matrix-mautrix-slack.service" diff --git a/roles/custom/matrix-bridge-mautrix-telegram/defaults/main.yml b/roles/custom/matrix-bridge-mautrix-telegram/defaults/main.yml index 5d19bab12..1229aa560 100644 --- a/roles/custom/matrix-bridge-mautrix-telegram/defaults/main.yml +++ b/roles/custom/matrix-bridge-mautrix-telegram/defaults/main.yml @@ -258,3 +258,13 @@ matrix_mautrix_telegram_displayname_template: '{displayname} (Telegram)' matrix_mautrix_telegram_bridge_encryption_allow: "{{ matrix_bridges_encryption_enabled }}" matrix_mautrix_telegram_bridge_encryption_default: "{{ matrix_bridges_encryption_default }}" matrix_mautrix_telegram_bridge_encryption_key_sharing_allow: "{{ matrix_mautrix_telegram_bridge_encryption_allow }}" + +# matrix_mautrix_telegram_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_mautrix_telegram_restart_necessary: false diff --git a/roles/custom/matrix-bridge-mautrix-telegram/tasks/setup_install.yml b/roles/custom/matrix-bridge-mautrix-telegram/tasks/setup_install.yml index f3b49aad9..dd01b3d8e 100644 --- a/roles/custom/matrix-bridge-mautrix-telegram/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-mautrix-telegram/tasks/setup_install.yml @@ -65,10 +65,10 @@ force_source: "{{ matrix_mautrix_telegram_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mautrix_telegram_docker_image_force_pull }}" when: "not matrix_mautrix_telegram_container_image_self_build | bool" - register: result + register: matrix_mautrix_telegram_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_mautrix_telegram_container_image_pull_result is not failed - name: Ensure lottieconverter is present when self-building ansible.builtin.git: @@ -146,6 +146,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_mautrix_telegram_config_result - name: Ensure mautrix-telegram registration.yaml installed ansible.builtin.copy: @@ -154,6 +155,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_mautrix_telegram_registration_result - name: Ensure mautrix-telegram support files installed ansible.builtin.template: @@ -164,6 +166,7 @@ group: "{{ matrix_group_name }}" with_items: - labels + register: matrix_mautrix_telegram_support_files_result - name: Ensure matrix-mautrix-telegram container network is created community.general.docker_network: @@ -177,6 +180,19 @@ src: "{{ role_path }}/templates/systemd/matrix-mautrix-telegram.service.j2" dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-mautrix-telegram.service" mode: 0644 + register: matrix_mautrix_telegram_systemd_service_result + +- name: Determine whether matrix-mautrix-telegram needs a restart + ansible.builtin.set_fact: + matrix_mautrix_telegram_restart_necessary: >- + {{ + matrix_mautrix_telegram_migration_requires_restart | default(false) + or matrix_mautrix_telegram_config_result.changed | default(false) + or matrix_mautrix_telegram_registration_result.changed | default(false) + or matrix_mautrix_telegram_support_files_result.changed | default(false) + or matrix_mautrix_telegram_systemd_service_result.changed | default(false) + or matrix_mautrix_telegram_container_image_pull_result.changed | default(false) + }} - name: Ensure matrix-mautrix-telegram.service restarted, if necessary ansible.builtin.service: diff --git a/roles/custom/matrix-bridge-mautrix-twitter/defaults/main.yml b/roles/custom/matrix-bridge-mautrix-twitter/defaults/main.yml index 8f1000712..467a6d685 100644 --- a/roles/custom/matrix-bridge-mautrix-twitter/defaults/main.yml +++ b/roles/custom/matrix-bridge-mautrix-twitter/defaults/main.yml @@ -219,3 +219,13 @@ matrix_mautrix_twitter_bridge_encryption_appservice: false matrix_mautrix_twitter_bridge_encryption_key_sharing_allow: "{{ matrix_mautrix_twitter_bridge_encryption_allow }}" # This pickle key value is compatible with the old mautrix-twitter bridge (before bridgev2). matrix_mautrix_twitter_bridge_encryption_pickle_key: mautrix.bridge.e2ee + +# matrix_mautrix_twitter_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_mautrix_twitter_restart_necessary: false diff --git a/roles/custom/matrix-bridge-mautrix-twitter/tasks/setup_install.yml b/roles/custom/matrix-bridge-mautrix-twitter/tasks/setup_install.yml index 74e0f805f..71b8b5a02 100644 --- a/roles/custom/matrix-bridge-mautrix-twitter/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-mautrix-twitter/tasks/setup_install.yml @@ -20,10 +20,10 @@ force_source: "{{ matrix_mautrix_twitter_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mautrix_twitter_docker_image_force_pull }}" when: matrix_mautrix_twitter_enabled | bool and not matrix_mautrix_twitter_container_image_self_build - register: result + register: matrix_mautrix_twitter_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_mautrix_twitter_container_image_pull_result is not failed - name: Ensure Mautrix Twitter paths exist ansible.builtin.file: @@ -68,6 +68,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_mautrix_twitter_config_result - name: Ensure mautrix-twitter registration.yaml installed ansible.builtin.copy: @@ -76,6 +77,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_mautrix_twitter_registration_result - name: Ensure mautrix-twitter support files installed ansible.builtin.template: @@ -86,6 +88,7 @@ group: "{{ matrix_group_name }}" with_items: - labels + register: matrix_mautrix_twitter_support_files_result - name: Ensure matrix-mautrix-twitter container network is created community.general.docker_network: @@ -99,6 +102,19 @@ src: "{{ role_path }}/templates/systemd/matrix-mautrix-twitter.service.j2" dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-mautrix-twitter.service" mode: 0644 + register: matrix_mautrix_twitter_systemd_service_result + +- name: Determine whether matrix-mautrix-twitter needs a restart + ansible.builtin.set_fact: + matrix_mautrix_twitter_restart_necessary: >- + {{ + matrix_mautrix_twitter_migration_requires_restart | default(false) + or matrix_mautrix_twitter_config_result.changed | default(false) + or matrix_mautrix_twitter_registration_result.changed | default(false) + or matrix_mautrix_twitter_support_files_result.changed | default(false) + or matrix_mautrix_twitter_systemd_service_result.changed | default(false) + or matrix_mautrix_twitter_container_image_pull_result.changed | default(false) + }} - name: Ensure matrix-mautrix-twitter.service restarted, if necessary ansible.builtin.service: diff --git a/roles/custom/matrix-bridge-mautrix-whatsapp/defaults/main.yml b/roles/custom/matrix-bridge-mautrix-whatsapp/defaults/main.yml index d814e36e8..00ec06e55 100644 --- a/roles/custom/matrix-bridge-mautrix-whatsapp/defaults/main.yml +++ b/roles/custom/matrix-bridge-mautrix-whatsapp/defaults/main.yml @@ -246,3 +246,13 @@ matrix_mautrix_whatsapp_registration_yaml: | io.element.msc4190: {{ matrix_mautrix_whatsapp_msc4190_enabled | to_json }} matrix_mautrix_whatsapp_registration: "{{ matrix_mautrix_whatsapp_registration_yaml | from_yaml }}" + +# matrix_mautrix_whatsapp_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_mautrix_whatsapp_restart_necessary: false diff --git a/roles/custom/matrix-bridge-mautrix-whatsapp/tasks/setup_install.yml b/roles/custom/matrix-bridge-mautrix-whatsapp/tasks/setup_install.yml index 838456443..70ce3aa48 100644 --- a/roles/custom/matrix-bridge-mautrix-whatsapp/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-mautrix-whatsapp/tasks/setup_install.yml @@ -66,10 +66,10 @@ force_source: "{{ matrix_mautrix_whatsapp_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mautrix_whatsapp_docker_image_force_pull }}" when: not matrix_mautrix_whatsapp_container_image_self_build - register: result + register: matrix_mautrix_whatsapp_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_mautrix_whatsapp_container_image_pull_result is not failed - name: Ensure Mautrix Whatsapp repository is present on self-build ansible.builtin.git: @@ -134,6 +134,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_mautrix_whatsapp_config_result - name: Ensure mautrix-whatsapp registration.yaml installed ansible.builtin.copy: @@ -142,6 +143,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_mautrix_whatsapp_registration_result - name: Ensure mautrix-whatsapp support files installed ansible.builtin.template: @@ -152,6 +154,7 @@ group: "{{ matrix_group_name }}" with_items: - labels + register: matrix_mautrix_whatsapp_support_files_result - name: Ensure matrix-mautrix-whatsapp container network is created community.general.docker_network: @@ -165,6 +168,19 @@ src: "{{ role_path }}/templates/systemd/matrix-mautrix-whatsapp.service.j2" dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-mautrix-whatsapp.service" mode: 0644 + register: matrix_mautrix_whatsapp_systemd_service_result + +- name: Determine whether matrix-mautrix-whatsapp needs a restart + ansible.builtin.set_fact: + matrix_mautrix_whatsapp_restart_necessary: >- + {{ + matrix_mautrix_whatsapp_migration_requires_restart | default(false) + or matrix_mautrix_whatsapp_config_result.changed | default(false) + or matrix_mautrix_whatsapp_registration_result.changed | default(false) + or matrix_mautrix_whatsapp_support_files_result.changed | default(false) + or matrix_mautrix_whatsapp_systemd_service_result.changed | default(false) + or matrix_mautrix_whatsapp_container_image_pull_result.changed | default(false) + }} - name: Ensure matrix-mautrix-whatsapp.service restarted, if necessary ansible.builtin.service: diff --git a/roles/custom/matrix-bridge-mx-puppet-groupme/defaults/main.yml b/roles/custom/matrix-bridge-mx-puppet-groupme/defaults/main.yml index 5a58f5be9..5d5659168 100644 --- a/roles/custom/matrix-bridge-mx-puppet-groupme/defaults/main.yml +++ b/roles/custom/matrix-bridge-mx-puppet-groupme/defaults/main.yml @@ -136,3 +136,13 @@ matrix_mx_puppet_groupme_registration_yaml: | receive_ephemeral: true matrix_mx_puppet_groupme_registration: "{{ matrix_mx_puppet_groupme_registration_yaml | from_yaml }}" + +# matrix_mx_puppet_groupme_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_mx_puppet_groupme_restart_necessary: false diff --git a/roles/custom/matrix-bridge-mx-puppet-groupme/tasks/setup_install.yml b/roles/custom/matrix-bridge-mx-puppet-groupme/tasks/setup_install.yml index 1e9d8f37f..142a80adb 100644 --- a/roles/custom/matrix-bridge-mx-puppet-groupme/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-mx-puppet-groupme/tasks/setup_install.yml @@ -79,10 +79,10 @@ force_source: "{{ matrix_mx_puppet_groupme_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mx_puppet_groupme_docker_image_force_pull }}" when: matrix_mx_puppet_groupme_enabled | bool and not matrix_mx_puppet_groupme_container_image_self_build - register: result + register: matrix_mx_puppet_groupme_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_mx_puppet_groupme_container_image_pull_result is not failed - name: Ensure MX Puppet Groupme repository is present on self build ansible.builtin.git: @@ -114,6 +114,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_mx_puppet_groupme_config_result - name: Ensure mx-puppet-groupme groupme-registration.yaml installed ansible.builtin.copy: @@ -122,6 +123,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_mx_puppet_groupme_registration_result - name: Ensure mx-puppet-groupme container network is created community.general.docker_network: @@ -135,6 +137,18 @@ src: "{{ role_path }}/templates/systemd/matrix-mx-puppet-groupme.service.j2" dest: "/etc/systemd/system/matrix-mx-puppet-groupme.service" mode: 0644 + register: matrix_mx_puppet_groupme_systemd_service_result + +- name: Determine whether matrix-mx-puppet-groupme needs a restart + ansible.builtin.set_fact: + matrix_mx_puppet_groupme_restart_necessary: >- + {{ + matrix_mx_puppet_groupme_migration_requires_restart | default(false) + or matrix_mx_puppet_groupme_config_result.changed | default(false) + or matrix_mx_puppet_groupme_registration_result.changed | default(false) + or matrix_mx_puppet_groupme_systemd_service_result.changed | default(false) + or matrix_mx_puppet_groupme_container_image_pull_result.changed | default(false) + }} - name: Ensure matrix-mx-puppet-groupme.service restarted, if necessary ansible.builtin.service: diff --git a/roles/custom/matrix-bridge-mx-puppet-steam/defaults/main.yml b/roles/custom/matrix-bridge-mx-puppet-steam/defaults/main.yml index 033c01940..d5a858790 100644 --- a/roles/custom/matrix-bridge-mx-puppet-steam/defaults/main.yml +++ b/roles/custom/matrix-bridge-mx-puppet-steam/defaults/main.yml @@ -137,3 +137,13 @@ matrix_mx_puppet_steam_registration_yaml: | receive_ephemeral: true matrix_mx_puppet_steam_registration: "{{ matrix_mx_puppet_steam_registration_yaml | from_yaml }}" + +# matrix_mx_puppet_steam_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_mx_puppet_steam_restart_necessary: false diff --git a/roles/custom/matrix-bridge-mx-puppet-steam/tasks/setup_install.yml b/roles/custom/matrix-bridge-mx-puppet-steam/tasks/setup_install.yml index 2f7bfacfb..8e96923a5 100644 --- a/roles/custom/matrix-bridge-mx-puppet-steam/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-mx-puppet-steam/tasks/setup_install.yml @@ -81,10 +81,10 @@ force_source: "{{ matrix_mx_puppet_steam_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_mx_puppet_steam_docker_image_force_pull }}" when: matrix_mx_puppet_steam_enabled | bool and not matrix_mx_puppet_steam_container_image_self_build - register: result + register: matrix_mx_puppet_steam_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_mx_puppet_steam_container_image_pull_result is not failed - name: Ensure MX Puppet Steam repository is present on self build ansible.builtin.git: @@ -116,6 +116,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_mx_puppet_steam_config_result - name: Ensure mx-puppet-steam steam-registration.yaml installed ansible.builtin.copy: @@ -124,6 +125,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_mx_puppet_steam_registration_result - name: Ensure mx-puppet-steam container network is created community.general.docker_network: @@ -137,6 +139,18 @@ src: "{{ role_path }}/templates/systemd/matrix-mx-puppet-steam.service.j2" dest: "/etc/systemd/system/matrix-mx-puppet-steam.service" mode: 0644 + register: matrix_mx_puppet_steam_systemd_service_result + +- name: Determine whether matrix-mx-puppet-steam needs a restart + ansible.builtin.set_fact: + matrix_mx_puppet_steam_restart_necessary: >- + {{ + matrix_mx_puppet_steam_migration_requires_restart | default(false) + or matrix_mx_puppet_steam_config_result.changed | default(false) + or matrix_mx_puppet_steam_registration_result.changed | default(false) + or matrix_mx_puppet_steam_systemd_service_result.changed | default(false) + or matrix_mx_puppet_steam_container_image_pull_result.changed | default(false) + }} - name: Ensure matrix-mx-puppet-steam.service restarted, if necessary ansible.builtin.service: diff --git a/roles/custom/matrix-bridge-postmoogle/defaults/main.yml b/roles/custom/matrix-bridge-postmoogle/defaults/main.yml index 458395e8c..10a658a45 100644 --- a/roles/custom/matrix-bridge-postmoogle/defaults/main.yml +++ b/roles/custom/matrix-bridge-postmoogle/defaults/main.yml @@ -187,3 +187,13 @@ matrix_postmoogle_mailboxes_activation: none # matrix_postmoogle_environment_variables_extension: | # postmoogle_TEXT_DONE=Done matrix_postmoogle_environment_variables_extension: '' + +# matrix_postmoogle_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_postmoogle_restart_necessary: false diff --git a/roles/custom/matrix-bridge-postmoogle/tasks/setup_install.yml b/roles/custom/matrix-bridge-postmoogle/tasks/setup_install.yml index 1c0887a3d..bbef77120 100644 --- a/roles/custom/matrix-bridge-postmoogle/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-postmoogle/tasks/setup_install.yml @@ -76,6 +76,7 @@ owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" mode: 0640 + register: matrix_postmoogle_env_result - name: Ensure postmoogle image is pulled community.docker.docker_image: @@ -84,10 +85,10 @@ force_source: "{{ matrix_postmoogle_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_postmoogle_docker_image_force_pull }}" when: "not matrix_postmoogle_container_image_self_build | bool" - register: result + register: matrix_postmoogle_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_postmoogle_container_image_pull_result is not failed - name: Ensure postmoogle repository is present on self-build ansible.builtin.git: @@ -125,3 +126,13 @@ dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-postmoogle.service" mode: 0644 register: matrix_postmoogle_systemd_service_result + +- name: Determine whether matrix-postmoogle needs a restart + ansible.builtin.set_fact: + matrix_postmoogle_restart_necessary: >- + {{ + matrix_postmoogle_migration_requires_restart | default(false) + or matrix_postmoogle_env_result.changed | default(false) + or matrix_postmoogle_systemd_service_result.changed | default(false) + or matrix_postmoogle_container_image_pull_result.changed | default(false) + }} diff --git a/roles/custom/matrix-bridge-sms/defaults/main.yml b/roles/custom/matrix-bridge-sms/defaults/main.yml index a8ed64791..87bdb2721 100644 --- a/roles/custom/matrix-bridge-sms/defaults/main.yml +++ b/roles/custom/matrix-bridge-sms/defaults/main.yml @@ -148,3 +148,13 @@ matrix_sms_bridge_registration_yaml: | rate_limited: false matrix_sms_bridge_registration: "{{ matrix_sms_bridge_registration_yaml | from_yaml }}" + +# matrix_sms_bridge_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_sms_bridge_restart_necessary: false diff --git a/roles/custom/matrix-bridge-sms/tasks/setup_install.yml b/roles/custom/matrix-bridge-sms/tasks/setup_install.yml index 46be38205..59cc58efd 100644 --- a/roles/custom/matrix-bridge-sms/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-sms/tasks/setup_install.yml @@ -14,10 +14,10 @@ community.docker.docker_image: name: "{{ matrix_sms_bridge_docker_image }}" source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}" - register: result + register: matrix_sms_bridge_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_sms_bridge_container_image_pull_result is not failed - name: Ensure matrix-sms-bridge paths exist ansible.builtin.file: @@ -38,6 +38,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_sms_bridge_config_result - name: Ensure matrix-sms-bridge registration.yaml installed ansible.builtin.copy: @@ -46,6 +47,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_sms_bridge_registration_result - name: Ensure android-sms-gateway-server cert installed ansible.builtin.copy: @@ -55,6 +57,7 @@ owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" when: matrix_sms_bridge_provider_android_truststore_local_path != "" + register: matrix_sms_bridge_cert_result - name: Ensure matrix-sms-bridge container network is created community.general.docker_network: @@ -68,3 +71,15 @@ src: "{{ role_path }}/templates/systemd/matrix-sms-bridge.service.j2" dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-sms-bridge.service" mode: 0644 + register: matrix_sms_bridge_systemd_service_result + +- name: Determine whether matrix-sms-bridge needs a restart + ansible.builtin.set_fact: + matrix_sms_bridge_restart_necessary: >- + {{ + matrix_sms_bridge_config_result.changed | default(false) + or matrix_sms_bridge_registration_result.changed | default(false) + or matrix_sms_bridge_cert_result.changed | default(false) + or matrix_sms_bridge_systemd_service_result.changed | default(false) + or matrix_sms_bridge_container_image_pull_result.changed | default(false) + }} diff --git a/roles/custom/matrix-bridge-steam/defaults/main.yml b/roles/custom/matrix-bridge-steam/defaults/main.yml index b9aecde72..ed065a29d 100644 --- a/roles/custom/matrix-bridge-steam/defaults/main.yml +++ b/roles/custom/matrix-bridge-steam/defaults/main.yml @@ -251,3 +251,13 @@ matrix_steam_bridge_bridge_encryption_require: false matrix_steam_bridge_bridge_encryption_appservice: false matrix_steam_bridge_bridge_encryption_key_sharing_allow: "{{ matrix_steam_bridge_bridge_encryption_allow }}" matrix_steam_bridge_bridge_encryption_pickle_key: mautrix.bridge.e2ee + +# matrix_steam_bridge_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_steam_bridge_restart_necessary: false diff --git a/roles/custom/matrix-bridge-steam/tasks/setup_install.yml b/roles/custom/matrix-bridge-steam/tasks/setup_install.yml index 933e46668..9772784cb 100644 --- a/roles/custom/matrix-bridge-steam/tasks/setup_install.yml +++ b/roles/custom/matrix-bridge-steam/tasks/setup_install.yml @@ -14,10 +14,10 @@ force_source: "{{ matrix_steam_bridge_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_steam_bridge_docker_image_force_pull }}" when: matrix_steam_bridge_enabled | bool and not matrix_steam_bridge_container_image_self_build - register: result + register: matrix_steam_bridge_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_steam_bridge_container_image_pull_result is not failed - name: Ensure Steam bridge paths exist ansible.builtin.file: @@ -62,6 +62,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_steam_bridge_config_result - name: Ensure matrix-steam-bridge registration.yaml installed ansible.builtin.copy: @@ -70,6 +71,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_steam_bridge_registration_result - name: Ensure matrix-steam-bridge support files installed ansible.builtin.template: @@ -80,6 +82,7 @@ group: "{{ matrix_group_name }}" with_items: - labels + register: matrix_steam_bridge_support_files_result - name: Ensure matrix-steam-bridge container network is created community.general.docker_network: @@ -93,6 +96,19 @@ src: "{{ role_path }}/templates/systemd/matrix-steam-bridge.service.j2" dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-steam-bridge.service" mode: 0644 + register: matrix_steam_bridge_systemd_service_result + +- name: Determine whether matrix-steam-bridge needs a restart + ansible.builtin.set_fact: + matrix_steam_bridge_restart_necessary: >- + {{ + matrix_steam_bridge_migration_requires_restart | default(false) + or matrix_steam_bridge_config_result.changed | default(false) + or matrix_steam_bridge_registration_result.changed | default(false) + or matrix_steam_bridge_support_files_result.changed | default(false) + or matrix_steam_bridge_systemd_service_result.changed | default(false) + or matrix_steam_bridge_container_image_pull_result.changed | default(false) + }} - name: Ensure matrix-steam-bridge.service restarted, if necessary ansible.builtin.service: diff --git a/roles/custom/matrix-client-element/defaults/main.yml b/roles/custom/matrix-client-element/defaults/main.yml index a2306d27c..dd8b16a0a 100644 --- a/roles/custom/matrix-client-element/defaults/main.yml +++ b/roles/custom/matrix-client-element/defaults/main.yml @@ -423,3 +423,13 @@ matrix_client_element_environment_variable_element_web_port: "{{ matrix_client_e # matrix_client_element_environment_variables_extension: | # ELEMENT_WEB_PORT=8080 matrix_client_element_environment_variables_extension: '' + +# matrix_client_element_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_client_element_restart_necessary: false diff --git a/roles/custom/matrix-client-element/tasks/setup_install.yml b/roles/custom/matrix-client-element/tasks/setup_install.yml index a226f5b8a..375aa181c 100644 --- a/roles/custom/matrix-client-element/tasks/setup_install.yml +++ b/roles/custom/matrix-client-element/tasks/setup_install.yml @@ -30,10 +30,10 @@ force_source: "{{ matrix_client_element_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_client_element_docker_image_force_pull }}" when: "not matrix_client_element_container_image_self_build | bool" - register: result + register: matrix_client_element_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_client_element_container_image_pull_result is not failed - name: Ensure Element Web repository is present on self-build ansible.builtin.git: @@ -77,6 +77,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_client_element_config_result - name: Ensure Element location sharing map style installed when: matrix_client_element_location_sharing_enabled | bool @@ -86,6 +87,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_client_element_config_map_style_result - name: Ensure Element Web config files installed ansible.builtin.template: @@ -100,6 +102,7 @@ - {src: "{{ matrix_client_element_page_template_welcome_path }}", name: "welcome.html"} - {src: "{{ matrix_client_element_embedded_pages_home_path }}", name: "home.html"} when: "item.src is not none" + register: matrix_client_element_support_files_result - name: Ensure Element Web nginx.conf file is removed ansible.builtin.file: @@ -126,3 +129,15 @@ src: "{{ role_path }}/templates/systemd/matrix-client-element.service.j2" dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-client-element.service" mode: 0644 + register: matrix_client_element_systemd_service_result + +- name: Determine whether Element Web needs a restart + ansible.builtin.set_fact: + matrix_client_element_restart_necessary: >- + {{ + matrix_client_element_config_result.changed | default(false) + or matrix_client_element_config_map_style_result.changed | default(false) + or matrix_client_element_support_files_result.changed | default(false) + or matrix_client_element_systemd_service_result.changed | default(false) + or matrix_client_element_container_image_pull_result.changed | default(false) + }} diff --git a/roles/custom/matrix-client-fluffychat/defaults/main.yml b/roles/custom/matrix-client-fluffychat/defaults/main.yml index 96904059b..a30560208 100644 --- a/roles/custom/matrix-client-fluffychat/defaults/main.yml +++ b/roles/custom/matrix-client-fluffychat/defaults/main.yml @@ -152,3 +152,13 @@ matrix_client_fluffychat_self_check_validate_certificates: true # Controls the default homeserver domain (not URL) used in the FluffyChat Web configuration. matrix_client_fluffychat_config_defaultHomeserver: ~ + +# matrix_client_fluffychat_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_client_fluffychat_restart_necessary: false diff --git a/roles/custom/matrix-client-fluffychat/tasks/setup_install.yml b/roles/custom/matrix-client-fluffychat/tasks/setup_install.yml index 142279947..3fe0b813b 100644 --- a/roles/custom/matrix-client-fluffychat/tasks/setup_install.yml +++ b/roles/custom/matrix-client-fluffychat/tasks/setup_install.yml @@ -24,10 +24,10 @@ force_source: "{{ matrix_client_fluffychat_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_client_fluffychat_docker_image_force_pull }}" when: "not matrix_client_fluffychat_container_image_self_build | bool" - register: result + register: matrix_client_fluffychat_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_client_fluffychat_container_image_pull_result is not failed - when: "matrix_client_fluffychat_container_image_self_build | bool" block: @@ -61,6 +61,7 @@ - {src: "{{ role_path }}/templates/labels.j2", dest: "{{ matrix_client_fluffychat_base_path }}/labels"} - {src: "{{ role_path }}/templates/config.json.j2", dest: "{{ matrix_client_fluffychat_config_path }}/config.json"} when: "item.src is not none" + register: matrix_client_fluffychat_config_result - name: Ensure FluffyChat Web container network is created community.general.docker_network: @@ -74,3 +75,13 @@ src: "{{ role_path }}/templates/systemd/matrix-client-fluffychat.service.j2" dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-client-fluffychat.service" mode: 0644 + register: matrix_client_fluffychat_systemd_service_result + +- name: Determine whether FluffyChat Web needs a restart + ansible.builtin.set_fact: + matrix_client_fluffychat_restart_necessary: >- + {{ + matrix_client_fluffychat_config_result.changed | default(false) + or matrix_client_fluffychat_systemd_service_result.changed | default(false) + or matrix_client_fluffychat_container_image_pull_result.changed | default(false) + }} diff --git a/roles/custom/matrix-client-schildichat/defaults/main.yml b/roles/custom/matrix-client-schildichat/defaults/main.yml index ab404caca..5a2b08823 100644 --- a/roles/custom/matrix-client-schildichat/defaults/main.yml +++ b/roles/custom/matrix-client-schildichat/defaults/main.yml @@ -317,3 +317,13 @@ matrix_client_schildichat_location_sharing_map_style_content_sources_localsource # matrix_client_schildichat_location_sharing_map_style_content_sources_localsource_attribution: "© OpenStreetMap contributors" # Leave blank, if map does not require attribution. matrix_client_schildichat_location_sharing_map_style_content_sources_localsource_attribution: "" + +# matrix_client_schildichat_restart_necessary controls whether the service +# will be restarted (when true) or merely started (when false) by the +# systemd service manager role (when conditional restart is enabled). +# +# This value is automatically computed during installation based on whether +# any configuration files, the systemd service file, or the container image changed. +# The default of `false` means "no restart needed" — appropriate when the role's +# installation tasks haven't run (e.g., due to --tags skipping them). +matrix_client_schildichat_restart_necessary: false diff --git a/roles/custom/matrix-client-schildichat/tasks/setup_install.yml b/roles/custom/matrix-client-schildichat/tasks/setup_install.yml index eb808d241..67b623541 100644 --- a/roles/custom/matrix-client-schildichat/tasks/setup_install.yml +++ b/roles/custom/matrix-client-schildichat/tasks/setup_install.yml @@ -27,10 +27,10 @@ force_source: "{{ matrix_client_schildichat_docker_image_force_pull if ansible_version.major > 2 or ansible_version.minor >= 8 else omit }}" force: "{{ omit if ansible_version.major > 2 or ansible_version.minor >= 8 else matrix_client_schildichat_docker_image_force_pull }}" when: "not matrix_client_schildichat_container_image_self_build | bool" - register: result + register: matrix_client_schildichat_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" - until: result is not failed + until: matrix_client_schildichat_container_image_pull_result is not failed - when: "matrix_client_schildichat_container_image_self_build | bool" block: @@ -74,6 +74,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_client_schildichat_config_result - name: Ensure SchildiChat location sharing map style installed when: matrix_client_schildichat_location_sharing_enabled | bool @@ -83,6 +84,7 @@ mode: 0644 owner: "{{ matrix_user_name }}" group: "{{ matrix_group_name }}" + register: matrix_client_schildichat_config_map_style_result - name: Ensure SchildiChat Web config files installed ansible.builtin.template: @@ -96,6 +98,7 @@ - {src: "{{ matrix_client_schildichat_page_template_welcome_path }}", name: "welcome.html"} - {src: "{{ matrix_client_schildichat_embedded_pages_home_path }}", name: "home.html"} when: "item.src is not none" + register: matrix_client_schildichat_support_files_result - name: Ensure SchildiChat Web config files removed ansible.builtin.file: @@ -117,3 +120,15 @@ src: "{{ role_path }}/templates/systemd/matrix-client-schildichat.service.j2" dest: "{{ devture_systemd_docker_base_systemd_path }}/matrix-client-schildichat.service" mode: 0644 + register: matrix_client_schildichat_systemd_service_result + +- name: Determine whether SchildiChat Web needs a restart + ansible.builtin.set_fact: + matrix_client_schildichat_restart_necessary: >- + {{ + matrix_client_schildichat_config_result.changed | default(false) + or matrix_client_schildichat_config_map_style_result.changed | default(false) + or matrix_client_schildichat_support_files_result.changed | default(false) + or matrix_client_schildichat_systemd_service_result.changed | default(false) + or matrix_client_schildichat_container_image_pull_result.changed | default(false) + }}