Benjamin Schanzel 1cd5f68e1a
mirror-container-images: use skopeo to mirror multiarch images
Use skopeo to copy images between registries instead of docker/podman as
this allows to copy layers and manifests of different architectures. The
same would require far more steps with docker/podman.

Change-Id: I1e6cda57d1eb827cc95eee54b19e9fd952cbf99e
2025-03-18 17:03:07 +01:00

26 lines
1.2 KiB
YAML

- name: Verify repository names
when: |
container_registry_credentials is defined
and zj_image.dest_registry not in container_registry_credentials
fail:
msg: "{{ zj_image.dest_registry }} credentials not found"
- name: Verify repository permission
when: |
container_registry_credentials[zj_image.dest_registry].repository is defined and
not zj_image.dest_repository | regex_search(container_registry_credentials[zj_image.dest_registry].repository)
fail:
msg: "{{ zj_image.repository }} not permitted by {{ container_registry_credentials[zj_image.dest_registry].repository }}"
- name: Log in to registry
command: "skopeo login -u {{ container_registry_credentials[zj_image.dest_registry].username }} -p {{ container_registry_credentials[zj_image.dest_registry].password }} {{ zj_image.dest_registry }}"
no_log: true
- name: Copy image
block:
- name: "Copy to {{ zj_image.dest_repository }}:{{ zj_image.dest_tag }}"
command: "skopeo copy --all docker://{{ zj_image.src_repository }}:{{ zj_image.src_tag }} docker://{{ zj_image.dest_repository }}:{{ zj_image.dest_tag }}"
always:
- name: Log out of registry
command: "skopeo logout {{ zj_image.dest_registry }}"