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) <noreply@anthropic.com>pull/5192/head
| @@ -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: "{{ 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_name: "{{ matrix_synapse_github_org_and_repo }}" | ||||
| matrix_synapse_container_image_tag: "{{ matrix_synapse_version }}" | 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: "{{ '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: "{{ matrix_synapse_container_image_registry_prefix_upstream_default }}" | ||||
| matrix_synapse_container_image_registry_prefix_upstream_default: "ghcr.io/" | 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: "{{ 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: "{{ 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_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_custom_endpoint: "your-custom-endpoint" | ||||
| matrix_s3_media_store_bucket_name: "your-bucket-name" | matrix_s3_media_store_bucket_name: "your-bucket-name" | ||||
| matrix_s3_media_store_aws_access_key: "your-aws-access-key" | 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: "{{ 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: "{{ 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_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_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" | 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: "{{ 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_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_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 }}" | matrix_synapse_reverse_proxy_companion_container_network: "{{ matrix_synapse_container_network }}" | ||||
| @@ -15,11 +15,9 @@ | |||||
| tasks_from: ensure_fuse_installed | tasks_from: ensure_fuse_installed | ||||
| - name: Ensure Goofys Docker image is pulled | - name: Ensure Goofys Docker image is pulled | ||||
| community.docker.docker_image: | |||||
| community.docker.docker_image_pull: | |||||
| name: "{{ matrix_s3_goofys_container_image }}" | 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 | register: matrix_goofys_container_image_pull_result | ||||
| retries: "{{ devture_playbook_help_container_retries_count }}" | retries: "{{ devture_playbook_help_container_retries_count }}" | ||||
| delay: "{{ devture_playbook_help_container_retries_delay }}" | delay: "{{ devture_playbook_help_container_retries_delay }}" | ||||
| @@ -52,11 +52,9 @@ | |||||
| when: not matrix_synapse_reverse_proxy_companion_njs_enabled | when: not matrix_synapse_reverse_proxy_companion_njs_enabled | ||||
| - name: Ensure matrix-synapse-reverse-proxy-companion nginx container image is pulled | - 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 }}" | 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 | register: matrix_synapse_reverse_proxy_companion_container_image_pull_result | ||||
| retries: "{{ devture_playbook_help_container_retries_count }}" | retries: "{{ devture_playbook_help_container_retries_count }}" | ||||
| delay: "{{ devture_playbook_help_container_retries_delay }}" | delay: "{{ devture_playbook_help_container_retries_delay }}" | ||||
| @@ -51,11 +51,9 @@ | |||||
| group: "{{ matrix_synapse_gid }}" | group: "{{ matrix_synapse_gid }}" | ||||
| - name: Ensure rust-synapse-compress-state image is pulled | - 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 }}" | 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 | register: result | ||||
| retries: "{{ devture_playbook_help_container_retries_count }}" | retries: "{{ devture_playbook_help_container_retries_count }}" | ||||
| delay: "{{ devture_playbook_help_container_retries_delay }}" | delay: "{{ devture_playbook_help_container_retries_delay }}" | ||||
| @@ -67,11 +67,9 @@ | |||||
| when: "matrix_synapse_git_pull_results.changed | bool or matrix_synapse_container_image_check_result.stdout == ''" | when: "matrix_synapse_git_pull_results.changed | bool or matrix_synapse_container_image_check_result.stdout == ''" | ||||
| - name: Ensure Synapse Docker image is pulled | - name: Ensure Synapse Docker image is pulled | ||||
| community.docker.docker_image: | |||||
| community.docker.docker_image_pull: | |||||
| name: "{{ matrix_synapse_container_image }}" | 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" | when: "not matrix_synapse_container_image_self_build" | ||||
| register: result | register: result | ||||
| retries: "{{ devture_playbook_help_container_retries_count }}" | retries: "{{ devture_playbook_help_container_retries_count }}" | ||||
| @@ -90,14 +88,14 @@ | |||||
| register: matrix_synapse_container_image_customizations_dockerfile_result | register: matrix_synapse_container_image_customizations_dockerfile_result | ||||
| - name: Ensure customized Docker image for Synapse is built | - name: Ensure customized Docker image for Synapse is built | ||||
| community.docker.docker_image: | |||||
| community.docker.docker_image_build: | |||||
| name: "{{ matrix_synapse_container_image_customized }}" | 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. | # We do this so that the signing key would get generated. | ||||
| # | # | ||||
| @@ -88,6 +88,11 @@ | |||||
| - {'old': 'matrix_synapse_container_image_customizations_s3_storage_provider_installation_old_boto_workaround_enabled', 'new': '<removed; see https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/4637>'} | - {'old': 'matrix_synapse_container_image_customizations_s3_storage_provider_installation_old_boto_workaround_enabled', 'new': '<removed; see https://github.com/spantaleev/matrix-docker-ansible-deploy/issues/4637>'} | ||||
| - {'old': 'matrix_synapse_container_image_force_pull', 'new': '<removed> (the new community.docker.docker_image_pull module handles this natively)'} | |||||
| - {'old': 'matrix_s3_goofys_container_image_force_pull', 'new': '<removed> (the new community.docker.docker_image_pull module handles this natively)'} | |||||
| - {'old': 'matrix_synapse_rust_synapse_compress_state_container_image_force_pull', 'new': '<removed> (the new community.docker.docker_image_pull module handles this natively)'} | |||||
| - {'old': 'matrix_synapse_reverse_proxy_companion_container_image_force_pull', 'new': '<removed> (the new community.docker.docker_image_pull module handles this natively)'} | |||||
| - name: (Deprecation) Catch and report renamed settings in matrix_synapse_configuration_extension_yaml | - name: (Deprecation) Catch and report renamed settings in matrix_synapse_configuration_extension_yaml | ||||
| ansible.builtin.fail: | ansible.builtin.fail: | ||||
| msg: >- | msg: >- | ||||