From 3431ed9857c2dc811247ced2b065ffc542373875 Mon Sep 17 00:00:00 2001 From: Cristian Calin <6627509+cristicalin@users.noreply.github.com> Date: Tue, 30 Nov 2021 10:48:56 +0200 Subject: [PATCH] containerd: properly pull images with containerd specific tools (#8245) --- roles/download/tasks/prep_download.yml | 20 ++++++++++++++++---- roles/download/tasks/set_container_facts.yml | 4 ++-- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/roles/download/tasks/prep_download.yml b/roles/download/tasks/prep_download.yml index 6c62c5d14..73d72cf25 100644 --- a/roles/download/tasks/prep_download.yml +++ b/roles/download/tasks/prep_download.yml @@ -13,11 +13,17 @@ image_info_command: "{{ docker_bin_dir }}/docker images -q | xargs -i {{ '{{' }} docker_bin_dir }}/docker inspect -f {% raw %}'{{ '{{' }} if .RepoTags }}{{ '{{' }} join .RepoTags \",\" }}{{ '{{' }} end }}{{ '{{' }} if .RepoDigests }},{{ '{{' }} join .RepoDigests \",\" }}{{ '{{' }} end }}' {% endraw %} {} | tr '\n' ','" when: container_manager == 'docker' -- name: prep_download | Set image pull/info command for containerd and crio +- name: prep_download | Set image pull/info command for containerd + set_fact: + image_info_command: "{{ bin_dir }}/ctr -n k8s.io images ls | awk '/application/ {print $1}' | grep -v ^sha | tr '\n' ','" + image_pull_command: "{{ bin_dir }}/ctr -n k8s.io images pull --platform linux/{{ image_arch }}" + when: container_manager == 'containerd' + +- name: prep_download | Set image pull/info command for crio set_fact: image_info_command: "{{ bin_dir }}/crictl images --verbose | awk -F ': ' '/RepoTags|RepoDigests/ {print $2}' | tr '\n' ','" image_pull_command: "{{ bin_dir }}/crictl pull" - when: container_manager in ['crio' ,'containerd'] + when: container_manager == 'crio' - name: prep_download | Set image pull/info command for docker on localhost set_fact: @@ -25,11 +31,17 @@ image_info_command_on_localhost: "{{ docker_bin_dir }}/docker images" when: container_manager_on_localhost == 'docker' -- name: prep_download | Set image pull/info command for containerd and crio on localhost +- name: prep_download | Set image pull/info command for containerd on localhost + set_fact: + image_info_command_on_localhost: "{{ bin_dir }}/ctr -n k8s.io images ls | awk '/application/ {print $1}' | grep -v ^sha | tr '\n' ','" + image_pull_command_on_localhost: "{{ bin_dir }}/ctr -n k8s.io images pull --platform linux/{{ image_arch }}" + when: container_manager_on_localhost == 'containerd' + +- name: prep_download | Set image pull/info command for crio on localhost set_fact: image_info_command_on_localhost: "{{ bin_dir }}/crictl images --verbose | awk -F ': ' '/RepoTags|RepoDigests/ {print $2}' | tr '\n' ','" image_pull_command_on_localhost: "{{ bin_dir }}/crictl pull" - when: container_manager_on_localhost in ['crio' ,'containerd'] + when: container_manager_on_localhost == 'crio' - name: prep_download | On localhost, check if passwordless root is possible command: "true" diff --git a/roles/download/tasks/set_container_facts.yml b/roles/download/tasks/set_container_facts.yml index 2b6640229..20c178300 100644 --- a/roles/download/tasks/set_container_facts.yml +++ b/roles/download/tasks/set_container_facts.yml @@ -29,7 +29,7 @@ - name: Set image save/load command for containerd set_fact: - image_save_command: "{{ containerd_bin_dir }}/ctr -n k8s.io image export {{ image_path_final }} {{ image_reponame }}" + image_save_command: "{{ containerd_bin_dir }}/ctr -n k8s.io image export --platform linux/{{ image_arch }} {{ image_path_final }} {{ image_reponame }}" image_load_command: "{{ containerd_bin_dir }}/ctr -n k8s.io image import --base-name {{ download.repo }} {{ image_path_final }}" when: container_manager == 'containerd' @@ -46,7 +46,7 @@ - name: Set image save/load command for containerd on localhost set_fact: - image_save_command_on_localhost: "{{ containerd_bin_dir }}/ctr -n k8s.io image export {{ image_path_cached }} {{ image_reponame }}" + image_save_command_on_localhost: "{{ containerd_bin_dir }}/ctr -n k8s.io image export --platform linux/{{ image_arch }} {{ image_path_cached }} {{ image_reponame }}" when: container_manager_on_localhost == 'containerd' - name: Set image save/load command for crio on localhost