From 152a3bbc2aa2feae1a40502edae46b648931f301 Mon Sep 17 00:00:00 2001 From: Slavi Pantaleev Date: Mon, 4 May 2026 22:25:44 +0300 Subject: [PATCH] matrix-synapse: switch to modern community.docker docker_image modules Replaces `community.docker.docker_image` with the modern `docker_image_pull` and `docker_image_build` split modules across all four task files (synapse, reverse_proxy_companion, goofys, rust-synapse-compress-state). Drops the `ansible_version` compatibility ladder and removes four `_container_image_force_pull` variables (the new pull module handles registry refresh natively via `pull: always`). The Synapse self-build path uses `ansible.builtin.shell` for BuildKit support and is left as-is. The customizations image build (which builds on top of the locally-tagged synapse image) is converted to `docker_image_build` with `pull: false`, preserving its existing rebuild-trigger semantics. Related to https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/5191. Co-Authored-By: Claude Opus 4.7 (1M context) --- roles/custom/matrix-synapse/defaults/main.yml | 4 ---- .../tasks/goofys/setup_install.yml | 6 ++---- .../reverse_proxy_companion/setup_install.yml | 6 ++---- .../rust-synapse-compress-state/main.yml | 6 ++---- .../tasks/synapse/setup_install.yml | 20 +++++++++---------- .../matrix-synapse/tasks/validate_config.yml | 5 +++++ 6 files changed, 20 insertions(+), 27 deletions(-) diff --git a/roles/custom/matrix-synapse/defaults/main.yml b/roles/custom/matrix-synapse/defaults/main.yml index e3d4d4c63..f6c6e424a 100644 --- a/roles/custom/matrix-synapse/defaults/main.yml +++ b/roles/custom/matrix-synapse/defaults/main.yml @@ -86,7 +86,6 @@ matrix_synapse_container_image_customizations_dockerfile_body_custom: '' matrix_synapse_container_image: "{{ matrix_synapse_container_image_registry_prefix }}{{ matrix_synapse_container_image_name }}:{{ matrix_synapse_container_image_tag }}" matrix_synapse_container_image_name: "{{ matrix_synapse_github_org_and_repo }}" matrix_synapse_container_image_tag: "{{ matrix_synapse_version }}" -matrix_synapse_container_image_force_pull: "{{ matrix_synapse_container_image.endswith(':latest') }}" matrix_synapse_container_image_registry_prefix: "{{ 'localhost/' if matrix_synapse_container_image_self_build else matrix_synapse_container_image_registry_prefix_upstream }}" matrix_synapse_container_image_registry_prefix_upstream: "{{ matrix_synapse_container_image_registry_prefix_upstream_default }}" matrix_synapse_container_image_registry_prefix_upstream_default: "ghcr.io/" @@ -1670,7 +1669,6 @@ matrix_s3_goofys_container_image: "{{ matrix_s3_goofys_container_image_registry_ matrix_s3_goofys_container_image_registry_prefix: "{{ matrix_s3_goofys_container_image_registry_prefix_upstream }}" matrix_s3_goofys_container_image_registry_prefix_upstream: "{{ matrix_s3_goofys_container_image_registry_prefix_upstream_default }}" matrix_s3_goofys_container_image_registry_prefix_upstream_default: "docker.io/" -matrix_s3_goofys_container_image_force_pull: "{{ matrix_s3_goofys_container_image.endswith(':latest') }}" matrix_s3_media_store_custom_endpoint: "your-custom-endpoint" matrix_s3_media_store_bucket_name: "your-bucket-name" matrix_s3_media_store_aws_access_key: "your-aws-access-key" @@ -1788,7 +1786,6 @@ matrix_synapse_rust_synapse_compress_state_container_image_version: v0.0.3 matrix_synapse_rust_synapse_compress_state_container_image_registry_prefix: "{{ matrix_synapse_rust_synapse_compress_state_container_image_registry_prefix_upstream }}" matrix_synapse_rust_synapse_compress_state_container_image_registry_prefix_upstream: "{{ matrix_synapse_rust_synapse_compress_state_container_image_registry_prefix_upstream_default }}" matrix_synapse_rust_synapse_compress_state_container_image_registry_prefix_upstream_default: "registry.gitlab.com/" -matrix_synapse_rust_synapse_compress_state_container_image_force_pull: "{{ matrix_synapse_rust_synapse_compress_state_container_image.endswith(':stable') or matrix_synapse_rust_synapse_compress_state_container_image.endswith(':latest') }}" matrix_synapse_rust_synapse_compress_state_base_path: "{{ matrix_base_data_path }}/rust-synapse-compress-state" matrix_synapse_rust_synapse_compress_state_synapse_compress_state_in_container_path: "/usr/local/bin/synapse_compress_state" @@ -1870,7 +1867,6 @@ matrix_synapse_reverse_proxy_companion_container_image_registry_prefix: "{{ matr matrix_synapse_reverse_proxy_companion_container_image_registry_prefix_upstream: "{{ matrix_synapse_reverse_proxy_companion_container_image_registry_prefix_upstream_default }}" matrix_synapse_reverse_proxy_companion_container_image_registry_prefix_upstream_default: "docker.io/" matrix_synapse_reverse_proxy_companion_container_image_tag: "{{ matrix_synapse_reverse_proxy_companion_version }}" -matrix_synapse_reverse_proxy_companion_container_image_force_pull: "{{ matrix_synapse_reverse_proxy_companion_container_image.endswith(':latest') }}" matrix_synapse_reverse_proxy_companion_container_network: "{{ matrix_synapse_container_network }}" diff --git a/roles/custom/matrix-synapse/tasks/goofys/setup_install.yml b/roles/custom/matrix-synapse/tasks/goofys/setup_install.yml index 40a5b9602..e6af44fd1 100644 --- a/roles/custom/matrix-synapse/tasks/goofys/setup_install.yml +++ b/roles/custom/matrix-synapse/tasks/goofys/setup_install.yml @@ -15,11 +15,9 @@ tasks_from: ensure_fuse_installed - name: Ensure Goofys Docker image is pulled - community.docker.docker_image: + community.docker.docker_image_pull: name: "{{ matrix_s3_goofys_container_image }}" - source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}" - force_source: "{{ matrix_s3_goofys_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_s3_goofys_container_image_force_pull }}" + pull: always register: matrix_goofys_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" diff --git a/roles/custom/matrix-synapse/tasks/reverse_proxy_companion/setup_install.yml b/roles/custom/matrix-synapse/tasks/reverse_proxy_companion/setup_install.yml index 1dd0116a8..c42388ae2 100644 --- a/roles/custom/matrix-synapse/tasks/reverse_proxy_companion/setup_install.yml +++ b/roles/custom/matrix-synapse/tasks/reverse_proxy_companion/setup_install.yml @@ -52,11 +52,9 @@ when: not matrix_synapse_reverse_proxy_companion_njs_enabled - name: Ensure matrix-synapse-reverse-proxy-companion nginx container image is pulled - community.docker.docker_image: + community.docker.docker_image_pull: name: "{{ matrix_synapse_reverse_proxy_companion_container_image }}" - source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}" - force_source: "{{ matrix_synapse_reverse_proxy_companion_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_synapse_reverse_proxy_companion_container_image_force_pull }}" + pull: always register: matrix_synapse_reverse_proxy_companion_container_image_pull_result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" diff --git a/roles/custom/matrix-synapse/tasks/rust-synapse-compress-state/main.yml b/roles/custom/matrix-synapse/tasks/rust-synapse-compress-state/main.yml index d074fd13e..a59b48443 100644 --- a/roles/custom/matrix-synapse/tasks/rust-synapse-compress-state/main.yml +++ b/roles/custom/matrix-synapse/tasks/rust-synapse-compress-state/main.yml @@ -51,11 +51,9 @@ group: "{{ matrix_synapse_gid }}" - name: Ensure rust-synapse-compress-state image is pulled - community.docker.docker_image: + community.docker.docker_image_pull: name: "{{ matrix_synapse_rust_synapse_compress_state_container_image }}" - source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}" - force_source: "{{ matrix_synapse_rust_synapse_compress_state_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_synapse_rust_synapse_compress_state_container_image_force_pull }}" + pull: always register: result retries: "{{ devture_playbook_help_container_retries_count }}" delay: "{{ devture_playbook_help_container_retries_delay }}" diff --git a/roles/custom/matrix-synapse/tasks/synapse/setup_install.yml b/roles/custom/matrix-synapse/tasks/synapse/setup_install.yml index 8a6bb6fdc..fa56df5e1 100644 --- a/roles/custom/matrix-synapse/tasks/synapse/setup_install.yml +++ b/roles/custom/matrix-synapse/tasks/synapse/setup_install.yml @@ -67,11 +67,9 @@ when: "matrix_synapse_git_pull_results.changed | bool or matrix_synapse_container_image_check_result.stdout == ''" - name: Ensure Synapse Docker image is pulled - community.docker.docker_image: + community.docker.docker_image_pull: name: "{{ matrix_synapse_container_image }}" - source: "{{ 'pull' if ansible_version.major > 2 or ansible_version.minor > 7 else omit }}" - force_source: "{{ matrix_synapse_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_synapse_container_image_force_pull }}" + pull: always when: "not matrix_synapse_container_image_self_build" register: result retries: "{{ devture_playbook_help_container_retries_count }}" @@ -90,14 +88,14 @@ register: matrix_synapse_container_image_customizations_dockerfile_result - name: Ensure customized Docker image for Synapse is built - community.docker.docker_image: + community.docker.docker_image_build: name: "{{ matrix_synapse_container_image_customized }}" - source: build - force_source: "{{ matrix_synapse_container_image_customizations_dockerfile_result.changed or matrix_synapse_container_image_customized_force_source }}" - build: - dockerfile: Dockerfile - path: "{{ matrix_synapse_customized_container_src_files_path }}" - nocache: "{{ matrix_synapse_container_image_customized_build_nocache }}" + dockerfile: Dockerfile + path: "{{ matrix_synapse_customized_container_src_files_path }}" + pull: false + nocache: "{{ matrix_synapse_container_image_customized_build_nocache }}" + rebuild: "{{ 'always' if (matrix_synapse_container_image_customizations_dockerfile_result.changed | bool or matrix_synapse_container_image_customized_force_source | bool) else 'never' }}" + register: matrix_synapse_container_image_customized_build_result # We do this so that the signing key would get generated. # diff --git a/roles/custom/matrix-synapse/tasks/validate_config.yml b/roles/custom/matrix-synapse/tasks/validate_config.yml index 000e91fd6..8d59fa30a 100644 --- a/roles/custom/matrix-synapse/tasks/validate_config.yml +++ b/roles/custom/matrix-synapse/tasks/validate_config.yml @@ -88,6 +88,11 @@ - {'old': 'matrix_synapse_container_image_customizations_s3_storage_provider_installation_old_boto_workaround_enabled', 'new': ''} + - {'old': 'matrix_synapse_container_image_force_pull', 'new': ' (the new community.docker.docker_image_pull module handles this natively)'} + - {'old': 'matrix_s3_goofys_container_image_force_pull', 'new': ' (the new community.docker.docker_image_pull module handles this natively)'} + - {'old': 'matrix_synapse_rust_synapse_compress_state_container_image_force_pull', 'new': ' (the new community.docker.docker_image_pull module handles this natively)'} + - {'old': 'matrix_synapse_reverse_proxy_companion_container_image_force_pull', 'new': ' (the new community.docker.docker_image_pull module handles this natively)'} + - name: (Deprecation) Catch and report renamed settings in matrix_synapse_configuration_extension_yaml ansible.builtin.fail: msg: >-