fix
This commit is contained in:
@@ -4,7 +4,7 @@ registry_url: gitea.dataprovider01.sandbox-cat-dat.simpl-europe.eu
|
|||||||
repository_name: j.r/application-consumption-demo-algorithm
|
repository_name: j.r/application-consumption-demo-algorithm
|
||||||
image_tag: optimized
|
image_tag: optimized
|
||||||
image_digest: "sha256:6cc8ab7c08f195cb65c689255418652fdf0094acaaa4ef63475d594039cda2ab"
|
image_digest: "sha256:6cc8ab7c08f195cb65c689255418652fdf0094acaaa4ef63475d594039cda2ab"
|
||||||
image_platform: "linux/amd64"
|
image_platform: "auto"
|
||||||
container_image: "{{ registry_url }}/{{ repository_name }}"
|
container_image: "{{ registry_url }}/{{ repository_name }}"
|
||||||
container_image_ref: "{{ container_image ~ ('@' ~ image_digest if (image_digest | default('') | length > 0) else ':' ~ image_tag) }}"
|
container_image_ref: "{{ container_image ~ ('@' ~ image_digest if (image_digest | default('') | length > 0) else ':' ~ image_tag) }}"
|
||||||
container_name: example-ml-app
|
container_name: example-ml-app
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ environment_variables:
|
|||||||
repository_name: "j.r/application-consumption-demo-algorithm"
|
repository_name: "j.r/application-consumption-demo-algorithm"
|
||||||
image_tag: "optimized"
|
image_tag: "optimized"
|
||||||
image_digest: "sha256:6cc8ab7c08f195cb65c689255418652fdf0094acaaa4ef63475d594039cda2ab"
|
image_digest: "sha256:6cc8ab7c08f195cb65c689255418652fdf0094acaaa4ef63475d594039cda2ab"
|
||||||
image_platform: "linux/amd64"
|
image_platform: "auto"
|
||||||
|
|
||||||
greeting_message: "Hello from SemaphoreUI Demo"
|
greeting_message: "Hello from SemaphoreUI Demo"
|
||||||
enable_health_check: "true"
|
enable_health_check: "true"
|
||||||
|
|||||||
@@ -16,26 +16,56 @@
|
|||||||
name: "{{ container_name }}"
|
name: "{{ container_name }}"
|
||||||
state: absent
|
state: absent
|
||||||
|
|
||||||
- name: Scarica immagine ML app (platform-aware)
|
- name: Calcola platform effettiva
|
||||||
block:
|
ansible.builtin.set_fact:
|
||||||
- name: Pull immagine Docker da registry
|
effective_image_platform: >-
|
||||||
ansible.builtin.command: >-
|
{{
|
||||||
docker pull{% if image_platform | default('') | length > 0 %} --platform {{ image_platform }}{% endif %} {{ container_image_ref }}
|
(image_platform | default(''))
|
||||||
register: image_pull
|
if (image_platform | default('')) != 'auto'
|
||||||
changed_when: image_pull.rc == 0
|
else
|
||||||
|
('linux/amd64' if ansible_architecture in ['x86_64', 'amd64']
|
||||||
|
else ('linux/arm64' if ansible_architecture in ['aarch64', 'arm64'] else ''))
|
||||||
|
}}
|
||||||
|
|
||||||
rescue:
|
- name: Pull immagine primaria (digest o tag)
|
||||||
- name: Errore pull immagine con suggerimenti
|
ansible.builtin.command: >-
|
||||||
ansible.builtin.fail:
|
docker pull{% if effective_image_platform | length > 0 %} --platform {{ effective_image_platform }}{% endif %} {{ container_image_ref }}
|
||||||
msg: >-
|
register: primary_pull
|
||||||
Pull fallito per {{ container_image_ref }} su platform {{ image_platform | default('default') }}.
|
changed_when: primary_pull.rc == 0
|
||||||
Verifica che il registry pubblichi un manifest compatibile con l'architettura host
|
failed_when: false
|
||||||
(esempio linux/amd64) oppure ricostruisci l'immagine come multi-arch.
|
|
||||||
|
- name: Fallback pull tramite tag se digest non compatibile
|
||||||
|
ansible.builtin.command: >-
|
||||||
|
docker pull{% if effective_image_platform | length > 0 %} --platform {{ effective_image_platform }}{% endif %} {{ container_image }}:{{ image_tag }}
|
||||||
|
register: fallback_pull
|
||||||
|
changed_when: fallback_pull.rc == 0
|
||||||
|
failed_when: false
|
||||||
|
when:
|
||||||
|
- primary_pull.rc != 0
|
||||||
|
- image_digest | default('') | length > 0
|
||||||
|
|
||||||
|
- name: Valida esito pull immagine
|
||||||
|
ansible.builtin.assert:
|
||||||
|
that:
|
||||||
|
- primary_pull.rc == 0 or (fallback_pull is defined and fallback_pull.rc == 0)
|
||||||
|
fail_msg: >-
|
||||||
|
Pull fallito sia per {{ container_image_ref }} sia per {{ container_image }}:{{ image_tag }}
|
||||||
|
su platform {{ effective_image_platform | default('default') }}.
|
||||||
|
Verifica manifest compatibile con l'architettura host oppure pubblica immagine multi-arch.
|
||||||
|
|
||||||
|
- name: Seleziona riferimento immagine effettivo
|
||||||
|
ansible.builtin.set_fact:
|
||||||
|
pulled_image_ref: >-
|
||||||
|
{{
|
||||||
|
container_image_ref
|
||||||
|
if primary_pull.rc == 0
|
||||||
|
else (container_image ~ ':' ~ image_tag)
|
||||||
|
}}
|
||||||
|
|
||||||
- name: Avvia container ML app
|
- name: Avvia container ML app
|
||||||
community.docker.docker_container:
|
community.docker.docker_container:
|
||||||
name: "{{ container_name }}"
|
name: "{{ container_name }}"
|
||||||
image: "{{ container_image_ref }}"
|
image: "{{ pulled_image_ref }}"
|
||||||
state: started
|
state: started
|
||||||
restart_policy: unless-stopped
|
restart_policy: unless-stopped
|
||||||
ports:
|
ports:
|
||||||
|
|||||||
@@ -14,8 +14,11 @@
|
|||||||
|
|
||||||
- name: Rimuovi immagine (opzionale)
|
- name: Rimuovi immagine (opzionale)
|
||||||
community.docker.docker_image:
|
community.docker.docker_image:
|
||||||
name: "{{ container_image_ref }}"
|
name: "{{ item }}"
|
||||||
state: absent
|
state: absent
|
||||||
|
loop:
|
||||||
|
- "{{ container_image_ref }}"
|
||||||
|
- "{{ container_image }}:{{ image_tag }}"
|
||||||
when: remove_image | bool
|
when: remove_image | bool
|
||||||
|
|
||||||
- name: Rimuovi directory applicazione
|
- name: Rimuovi directory applicazione
|
||||||
|
|||||||
Reference in New Issue
Block a user