X-Git-Url: https://gerrit.nordix.org/gitweb?p=infra%2Fstack%2Fkubernetes.git;a=blobdiff_plain;f=playbooks%2Froles%2Fpackage%2Ftasks%2Fcontainers.yaml;h=e94d6fd6c107f81fea47f6bcc942b9f79b9bd21e;hp=c90f906a030ef73e6bad0b434019125ca80420de;hb=dbb881e7fd077d2818d01dd6b46d4899af6940d8;hpb=df6ea7a608badaa4f78783bc0ac6184ce484e522 diff --git a/playbooks/roles/package/tasks/containers.yaml b/playbooks/roles/package/tasks/containers.yaml index c90f906..e94d6fd 100644 --- a/playbooks/roles/package/tasks/containers.yaml +++ b/playbooks/roles/package/tasks/containers.yaml @@ -83,73 +83,70 @@ kubeadm_images: "{{ kubeadm_images_cooked.results | map(attribute='ansible_facts.kubeadm_image') | list | items2dict }}" run_once: true -# NOTE (fdegir): docker_image module doesn't seem to respect become so falling back to command module -- name: Pull kubeadm container images - command: "docker pull {{ kubeadm_images[item.key].repo }}:{{ kubeadm_images[item.key].tag }}" - with_dict: "{{ kubeadm_images }}" - become: true +- name: Populate list of images to pull and save with those specified by Kubespray + vars: + image_list: [] + set_fact: + image_list: "{{ image_list }} + [ '{{ downloads[item].repo }}:{{ downloads[item].tag }}' ]" + loop: "{{ k8s_misc_images }}" changed_when: false + when: downloads[item].container is defined and downloads[item].container -- name: Pull tiller container image (helm v2 only) - command: "docker pull {{ downloads['tiller'].repo }}:{{ downloads['tiller'].tag }}" - become: true +- name: Populate list of images to pull and save with those specified by Kubeadm + set_fact: + image_list: "{{ image_list }} + [ '{{ item.value.repo }}:{{ item.value.tag }}' ]" + loop: "{{ kubeadm_images | dict2items }}" changed_when: false - when: helm_version is version('v3.0.0', '<') -- name: Pull misc container images - command: "docker pull {{ downloads[item].repo }}:{{ downloads[item].tag }}" - loop: "{{ k8s_misc_images }}" - become: true +- name: Populate list of images to pull and save with other miscellaneous images + set_fact: + image_list: "{{ image_list }} + [ '{{ item.value.repo }}:{{ item.value.tag }}' ]" + loop: "{{ other_images | dict2items }}" changed_when: false - when: downloads[item].container is defined and downloads[item].container -- name: Pull other container images - command: "docker pull {{ other_images[item.key].repo }}:{{ other_images[item.key].tag }}" - with_dict: "{{ other_images }}" - become: true +- name: Add tiller container image to list of images (helm v2 only) + set_fact: + image_list: "{{ image_list }} + [ '{{ downloads['tiller'].repo }}:{{ downloads['tiller'].tag }}' ]" changed_when: false + when: helm_version is version('v3.0.0', '<') -# save container images -- name: Save kubeadm container images - command: |- - docker save {{ kubeadm_images[item.key].repo }}:{{ kubeadm_images[item.key].tag }} - -o {{ kubeadm_images[item.key].repo | replace('/', '_') }}_{{ kubeadm_images[item.key].tag }}.tar - with_dict: "{{ kubeadm_images }}" - args: - chdir: "{{ containers_folder }}" - become: true - changed_when: false +- name: Dump image list to disk + copy: + content: "{{ image_list | join('\n') }}" + dest: "{{ engine_cache }}/images.txt" -- name: Save misc container images - command: |- - docker save {{ downloads[item].repo }}:{{ downloads[item].tag }} - -o {{ downloads[item].repo }} -o {{ downloads[item].repo | replace('/', '_') }}_{{ downloads[item].tag }}.tar - loop: "{{ k8s_misc_images }}" - args: - chdir: "{{ containers_folder }}" +- name: Pull images (using pull-images.sh) + vars: + container_tool: docker + container_pull_parallel: 4 + images_txt: "{{ engine_cache }}/images.txt" + script: pull-images.sh -l {{ images_txt }} -c {{ container_tool }} -p {{ container_pull_parallel }} become: true - changed_when: false - when: downloads[item].container is defined and downloads[item].container + register: pull_images_output_raw + changed_when: pull_images_output_raw.stdout is search("downloaded newer image for", ignorecase=true) -- name: Save tiller container image (helm v2 only) - command: |- - docker save {{ downloads['tiller'].repo }}:{{ downloads['tiller'].tag }} - -o {{ downloads['tiller'].repo }} -o {{ downloads['tiller'].repo | replace('/', '_') }}_{{ downloads['tiller'].tag }}.tar +- name: Save images (using save-images.sh) + vars: + container_tool: docker + images_txt: "{{ engine_cache }}/images.txt" + images_output: "{{ containers_folder }}/images.tar" + script: save-images.sh -l {{ images_txt }} -c {{ container_tool }} -o {{ images_output }} args: - chdir: "{{ containers_folder }}" + creates: "{{ images_output }}" become: true - changed_when: false - when: helm_version is version('v3.0.0', '<') -- name: Save other container images - command: |- - docker save {{ other_images[item.key].repo }}:{{ other_images[item.key].tag }} - -o {{ other_images[item.key].repo | replace('/', '_') }}_{{ other_images[item.key].tag }}.tar - with_dict: "{{ other_images }}" +- name: Save registry image separately + vars: + img: "{{ other_images['docker-registry'].repo }}:{{ other_images['docker-registry'].tag }}" + dest: "{{ img | regex_replace('[/:]', '_') }}.tar" + shell: |- + set -o pipefail && \ + docker save {{ img }} -o {{ dest }} args: + executable: "/bin/bash" chdir: "{{ containers_folder }}" + creates: "{{ containers_folder }}/{{ dest }}" become: true - changed_when: false # NOTE (fdegir): archive fails due to wrong permissions so we fix them - name: Fix container image permissions