diff --git a/deployment/ansible/playbooks/deploy-image.yml b/deployment/ansible/playbooks/deploy-image.yml index a7cdcc95..d4ed4e11 100644 --- a/deployment/ansible/playbooks/deploy-image.yml +++ b/deployment/ansible/playbooks/deploy-image.yml @@ -41,9 +41,24 @@ ansible.builtin.set_fact: app_name: "{{ app_name if (app_name is defined and app_name != '') else app_name_default }}" - - name: Set deploy_image from registry, app_name and tag + - name: Extract registry URL from docker-compose file (for image deployment) + ansible.builtin.shell: | + cd {{ application_code_dest }} + grep -h "image:" docker-compose.base.yml docker-compose.{{ application_compose_suffix }} 2>/dev/null | \ + grep -E "{{ app_name }}" | head -1 | \ + sed -E 's/.*image:\s*([^\/]+).*/\1/' | \ + sed -E 's/\/.*$//' || echo "{{ docker_registry }}" + register: compose_registry_url + changed_when: false + failed_when: false + + - name: Set actual registry from compose file or use default ansible.builtin.set_fact: - deploy_image: "{{ docker_registry }}/{{ app_name }}:{{ image_tag }}" + actual_registry: "{{ (compose_registry_url.stdout | trim) if (compose_registry_url.stdout | trim != '' and compose_registry_url.stdout | trim != docker_registry) else docker_registry }}" + + - name: Set deploy_image from actual registry, app_name and tag + ansible.builtin.set_fact: + deploy_image: "{{ actual_registry }}/{{ app_name }}:{{ image_tag }}" - name: Set database and MinIO variables from vault or defaults ansible.builtin.set_fact: @@ -123,21 +138,22 @@ - name: Update docker-compose file with new image tag ansible.builtin.replace: path: "{{ application_code_dest }}/docker-compose.{{ application_compose_suffix }}" - regexp: '^(\s+image:\s+)({{ docker_registry }}/{{ app_name }}:)(.*)$' + regexp: '^(\s+image:\s+)({{ actual_registry }}/{{ app_name }}:)(.*)$' replace: '\1\2{{ image_tag }}' register: compose_update_result failed_when: false changed_when: compose_update_result.changed | default(false) - - name: Update docker-compose file with new image (alternative pattern) + - name: Update docker-compose file with new image (alternative pattern - any registry) ansible.builtin.replace: path: "{{ application_code_dest }}/docker-compose.{{ application_compose_suffix }}" - regexp: 'image:\s+{{ docker_registry }}/{{ app_name }}:.*' - replace: 'image: {{ deploy_image }}' + regexp: '^(\s+image:\s+)([^\/]+\/{{ app_name }}:)(.*)$' + replace: '\1{{ actual_registry }}/{{ app_name }}:{{ image_tag }}' register: compose_update_alt when: compose_update_result.changed == false failed_when: false changed_when: compose_update_alt.changed | default(false) + changed_when: compose_update_alt.changed | default(false) - name: Ensure Docker networks exist community.docker.docker_network: