2 # ============LICENSE_START=======================================================
3 # Copyright (C) 2019 The Nordix Foundation. All rights reserved.
4 # ================================================================================
5 # Licensed under the Apache License, Version 2.0 (the "License");
6 # you may not use this file except in compliance with the License.
7 # You may obtain a copy of the License at
9 # http://www.apache.org/licenses/LICENSE-2.0
11 # Unless required by applicable law or agreed to in writing, software
12 # distributed under the License is distributed on an "AS IS" BASIS,
13 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 # See the License for the specific language governing permissions and
15 # limitations under the License.
17 # SPDX-License-Identifier: Apache-2.0
18 # ============LICENSE_END=========================================================
20 - name: Create directory to store container images
22 path: "{{ containers_folder }}"
28 - name: Set versions of k8s components in Kubespray downloads role
30 path: "{{ git_folder }}/kubespray/roles/download/defaults/main.yml"
31 regexp: "{{ item.regexp }}"
32 line: "{{ item.line }}"
34 - {regexp: "^kube_version:.*", line: "kube_version: {{ kubernetes_version }}"}
35 - {regexp: "^helm_version:.*", line: "helm_version: {{ helm_version }}"}
37 # NOTE (fdegir): order of vars files is significant
38 - name: Include kubespray vars files
39 include_vars: "{{ item }}"
41 - "{{ git_folder }}/kubespray/roles/kubespray-defaults/defaults/main.yaml"
42 - "{{ git_folder }}/kubespray/roles/download/defaults/main.yml"
44 - name: Remove outdated kubeadm-images.yaml file
46 path: "/tmp/kubeadm-images.yaml"
49 - name: Generate kubeadm-images.yaml to fetch container images
51 src: "kubeadm-images.yaml.j2"
52 dest: "/tmp/kubeadm-images.yaml"
55 # NOTE (fdegir): the tasks below are taken from kubespray/roles/download/tasks/prep_kubeadm_images.yml
56 - name: Get list of kubeadm images
59 {{ binaries_folder }}/kubeadm config images list --config=/tmp/kubeadm-images.yaml | grep -v coredns
62 register: kubeadm_images_raw
66 - name: Parse list of kubeadm images
68 kubeadm_images_list: "{{ kubeadm_images_raw.stdout_lines }}"
71 key: "kubeadm_{{ (item | regex_replace('^(?:.*\\/)*','')).split(':')[0] }}"
75 repo: "{{ item | regex_replace('^(.*):.*$','\\1') }}"
76 tag: "{{ item | regex_replace('^.*:(.*)$','\\1') }}"
77 loop: "{{ kubeadm_images_list | flatten(levels=1) }}"
78 register: kubeadm_images_cooked
81 - name: Convert list of kubeadm images to dict
83 kubeadm_images: "{{ kubeadm_images_cooked.results | map(attribute='ansible_facts.kubeadm_image') | list | items2dict }}"
86 # NOTE (fdegir): docker_image module doesn't seem to respect become so falling back to command module
87 - name: Pull kubeadm container images
88 command: "docker pull {{ kubeadm_images[item.key].repo }}:{{ kubeadm_images[item.key].tag }}"
89 with_dict: "{{ kubeadm_images }}"
93 - name: Pull misc container images
94 command: "docker pull {{ downloads[item].repo }}:{{ downloads[item].tag }}"
95 loop: "{{ k8s_misc_images }}"
99 - name: Pull other container images
100 command: "docker pull {{ other_images[item.key].repo }}:{{ other_images[item.key].tag }}"
101 with_dict: "{{ other_images }}"
105 # save container images
106 - name: Save kubeadm container images
108 docker save {{ kubeadm_images[item.key].repo }}:{{ kubeadm_images[item.key].tag }}
109 -o {{ kubeadm_images[item.key].repo | replace('/', '_') }}_{{ kubeadm_images[item.key].tag }}.tar
110 with_dict: "{{ kubeadm_images }}"
112 chdir: "{{ containers_folder }}"
116 - name: Save misc container images
118 docker save {{ downloads[item].repo }}:{{ downloads[item].tag }}
119 -o {{ downloads[item].repo }} -o {{ downloads[item].repo | replace('/', '_') }}_{{ downloads[item].tag }}.tar
120 loop: "{{ k8s_misc_images }}"
122 chdir: "{{ containers_folder }}"
126 - name: Save other container images
128 docker save {{ other_images[item.key].repo }}:{{ other_images[item.key].tag }}
129 -o {{ other_images[item.key].repo | replace('/', '_') }}_{{ other_images[item.key].tag }}.tar
130 with_dict: "{{ other_images }}"
132 chdir: "{{ containers_folder }}"
136 # NOTE (fdegir): archive fails due to wrong permissions so we fix them
137 - name: Fix container image permissions
139 path: "{{ containers_folder }}"
145 # vim: set ts=2 sw=2 expandtab: