diff --git a/contrib/offline/generate_list.sh b/contrib/offline/generate_list.sh index 6472044b2..cf05b96a8 100755 --- a/contrib/offline/generate_list.sh +++ b/contrib/offline/generate_list.sh @@ -15,8 +15,8 @@ grep 'download_url:' ${REPO_ROOT_DIR}/${DOWNLOAD_YML} \ # generate all images list template sed -n '/^downloads:/,/download_defaults:/p' ${REPO_ROOT_DIR}/${DOWNLOAD_YML} \ - | sed -n "s/repo: //p;s/tag: //p" | tr -d ' ' \ - | sed 'N;s#\n# #g' | tr ' ' ':' | sed 's/\"//g' > ${TEMP_DIR}/images.list.template + | sed -n "s/image_name: //p" | tr -d ' ' \ + | tr ' ' ':' | sed 's/\"//g' > ${TEMP_DIR}/images.list.template # add kube-* images to images list template # Those container images are downloaded by kubeadm, then roles/kubespray_defaults/defaults/main/download.yml diff --git a/docs/advanced/downloads.md b/docs/advanced/downloads.md index 9961eab5a..b1a9fa7fa 100644 --- a/docs/advanced/downloads.md +++ b/docs/advanced/downloads.md @@ -4,7 +4,7 @@ Kubespray supports several download/upload modes. The default is: * Each node downloads binaries and container images on its own, which is ``download_run_once: False``. * For K8s apps, pull policy is ``k8s_image_pull_policy: IfNotPresent``. -* For system managed containers, like kubelet or etcd, pull policy is ``download_always_pull: False``, which is pull if only the wanted repo and tag/sha256 digest differs from that the host has. +* For system managed containers, like kubelet or etcd, pull policy is ``download_always_pull: False``, which is pull if only the wanted repo and tag differs from that the host has. There is also a "pull once, push many" mode as well: @@ -21,17 +21,11 @@ On caching: Container images and binary files are described by the vars like ``foo_version``, ``foo_download_url``, ``foo_checksum`` for binaries and ``foo_image_repo``, -``foo_image_tag`` or optional ``foo_digest_checksum`` for containers. +``foo_image_tag`` for containers. Container images may be defined by its repo and tag, for example: -`andyshinn/dnsmasq:2.72`. Or by repo and tag and sha256 digest: -`andyshinn/dnsmasq@sha256:7c883354f6ea9876d176fe1d30132515478b2859d6fc0cbf9223ffdc09168193`. - -Note, the SHA256 digest and the image tag must be both specified and correspond -to each other. The given example above is represented by the following vars: ```yaml -dnsmasq_digest_checksum: 7c883354f6ea9876d176fe1d30132515478b2859d6fc0cbf9223ffdc09168193 dnsmasq_image_repo: andyshinn/dnsmasq dnsmasq_image_tag: '2.72' ``` diff --git a/roles/download/tasks/check_pull_required.yml b/roles/download/tasks/check_pull_required.yml index d367dd279..6c62ff519 100644 --- a/roles/download/tasks/check_pull_required.yml +++ b/roles/download/tasks/check_pull_required.yml @@ -10,15 +10,5 @@ - name: Check_pull_required | Set pull_required if the desired image is not yet loaded set_fact: - pull_required: "{{ (image_reponame | regex_replace('^docker\\.io/(library/)?', '')) not in docker_images.stdout.split(',') }}" + pull_required: "{{ (download.image_name | regex_replace('^docker\\.io/(library/)?', '')) not in docker_images.stdout.split(',') }}" when: not download_always_pull - -- name: Check_pull_required | Check that the local digest sha256 corresponds to the given image tag - assert: - that: "{{ download.repo }}:{{ download.tag }} in docker_images.stdout.split(',')" - when: - - not download_always_pull - - not pull_required - - pull_by_digest - tags: - - asserts diff --git a/roles/download/tasks/download_container.yml b/roles/download/tasks/download_container.yml index c27043c79..9f9fe4df9 100644 --- a/roles/download/tasks/download_container.yml +++ b/roles/download/tasks/download_container.yml @@ -21,7 +21,7 @@ - not download_always_pull - debug: # noqa name[missing] - msg: "Pull {{ image_reponame }} required is: {{ pull_required }}" + msg: "Pull {{ download.image_name }} required is: {{ pull_required }}" - name: Download_container | Determine if image is in cache stat: @@ -49,13 +49,13 @@ - name: Stop if image not in cache on ansible host when download_force_cache=true assert: that: image_is_cached - msg: "Image cache file {{ image_path_cached }} not found for {{ image_reponame }} on localhost" + msg: "Image cache file {{ image_path_cached }} not found for {{ download.image_name }} on localhost" when: - download_force_cache - not download_run_once - name: Download_container | Download image if required - command: "{{ image_pull_command_on_localhost if download_localhost else image_pull_command }} {{ image_reponame }}" + command: "{{ image_pull_command_on_localhost if download_localhost else image_pull_command }} {{ download.image_name }}" delegate_to: "{{ download_delegate if download_run_once else inventory_hostname }}" delegate_facts: true run_once: "{{ download_run_once }}" diff --git a/roles/download/tasks/prep_kubeadm_images.yml b/roles/download/tasks/prep_kubeadm_images.yml index 5c706d8f3..56327f949 100644 --- a/roles/download/tasks/prep_kubeadm_images.yml +++ b/roles/download/tasks/prep_kubeadm_images.yml @@ -42,8 +42,7 @@ value: enabled: true container: true - repo: "{{ item | regex_replace('^(.*):.*$', '\\1') }}" - tag: "{{ item | regex_replace('^.*:(.*)$', '\\1') }}" + image_name: "{{ item }}" groups: - k8s_cluster loop: "{{ kubeadm_images_list | flatten(levels=1) }}" diff --git a/roles/download/tasks/set_container_facts.yml b/roles/download/tasks/set_container_facts.yml index 5b93f2953..2a5e93adf 100644 --- a/roles/download/tasks/set_container_facts.yml +++ b/roles/download/tasks/set_container_facts.yml @@ -1,20 +1,7 @@ --- -- name: Set_container_facts | Display the name of the image being processed - debug: - msg: "{{ download.repo }}" - -- name: Set_container_facts | Set if containers should be pulled by digest - set_fact: - pull_by_digest: "{{ download.sha256 is defined and download.sha256 }}" - -- name: Set_container_facts | Define by what name to pull the image - set_fact: - image_reponame: >- - {%- if pull_by_digest %}{{ download.repo }}@sha256:{{ download.sha256 }}{%- else -%}{{ download.repo }}:{{ download.tag }}{%- endif -%} - - name: Set_container_facts | Define file name of image set_fact: - image_filename: "{{ image_reponame | regex_replace('/|\0|:', '_') }}.tar" + image_filename: "{{ download.image_name | regex_replace('/|\0|:', '_') }}.tar" - name: Set_container_facts | Define path of image set_fact: @@ -23,33 +10,33 @@ - name: Set image save/load command for docker set_fact: - image_save_command: "{{ docker_bin_dir }}/docker save {{ image_reponame }} | gzip -{{ download_compress }} > {{ image_path_final }}" + image_save_command: "{{ docker_bin_dir }}/docker save {{ download.image_name }} | gzip -{{ download_compress }} > {{ image_path_final }}" image_load_command: "{{ docker_bin_dir }}/docker load < {{ image_path_final }}" when: container_manager == 'docker' - name: Set image save/load command for containerd set_fact: - image_save_command: "{{ bin_dir }}/nerdctl -n k8s.io image save -o {{ image_path_final }} {{ image_reponame }}" + image_save_command: "{{ bin_dir }}/nerdctl -n k8s.io image save -o {{ image_path_final }} {{ download.image_name }}" image_load_command: "{{ bin_dir }}/nerdctl -n k8s.io image load < {{ image_path_final }}" when: container_manager == 'containerd' - name: Set image save/load command for crio set_fact: - image_save_command: "{{ bin_dir }}/skopeo copy containers-storage:{{ image_reponame }} docker-archive:{{ image_path_final }} 2>/dev/null" - image_load_command: "{{ bin_dir }}/skopeo copy docker-archive:{{ image_path_final }} containers-storage:{{ image_reponame }} 2>/dev/null" + image_save_command: "{{ bin_dir }}/skopeo copy containers-storage:{{ download.image_name }} docker-archive:{{ image_path_final }} 2>/dev/null" + image_load_command: "{{ bin_dir }}/skopeo copy docker-archive:{{ image_path_final }} containers-storage:{{ download.image_name }} 2>/dev/null" when: container_manager == 'crio' - name: Set image save/load command for docker on localhost set_fact: - image_save_command_on_localhost: "{{ docker_bin_dir }}/docker save {{ image_reponame }} | gzip -{{ download_compress }} > {{ image_path_cached }}" + image_save_command_on_localhost: "{{ docker_bin_dir }}/docker save {{ download.image_name }} | gzip -{{ download_compress }} > {{ image_path_cached }}" when: container_manager_on_localhost == 'docker' - 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 --platform linux/{{ image_arch }} {{ 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 }} {{ download.image_name }}" when: container_manager_on_localhost == 'containerd' - name: Set image save/load command for crio on localhost set_fact: - image_save_command_on_localhost: "{{ bin_dir }}/skopeo copy containers-storage:{{ image_reponame }} docker-archive:{{ image_path_final }} 2>/dev/null" + image_save_command_on_localhost: "{{ bin_dir }}/skopeo copy containers-storage:{{ download.image_name }} docker-archive:{{ image_path_final }} 2>/dev/null" when: container_manager_on_localhost == 'crio' diff --git a/roles/kubespray_defaults/defaults/main/download.yml b/roles/kubespray_defaults/defaults/main/download.yml index fd7238f58..2e008d5e3 100644 --- a/roles/kubespray_defaults/defaults/main/download.yml +++ b/roles/kubespray_defaults/defaults/main/download.yml @@ -40,7 +40,7 @@ download_container: true # in the download_run_once mode. download_localhost: false -# Always pull images if set to True. Otherwise check by the repo's tag/digest. +# Always pull images if set to True. Otherwise check by the repo's tag. download_always_pull: false # Some problems may occur when downloading files over https proxy due to ansible bug @@ -377,11 +377,8 @@ downloads: file: "{{ etcd_deployment_type == 'host' }}" enabled: true dest: "{{ local_release_dir }}/etcd-{{ etcd_version }}-linux-{{ image_arch }}.tar.gz" - repo: "{{ etcd_image_repo }}" - tag: "{{ etcd_image_tag }}" - checksum: >- - {{ etcd_binary_checksum if (etcd_deployment_type == 'host') - else etcd_digest_checksum | d(None) }} + image_name: "{{ etcd_image_repo }}:{{ etcd_image_tag }}" + checksum: "{{ etcd_binary_checksum if etcd_deployment_type == 'host' else None }}" url: "{{ etcd_download_url }}" unarchive: "{{ etcd_deployment_type == 'host' }}" owner: "root" @@ -586,63 +583,49 @@ downloads: cilium: enabled: "{{ kube_network_plugin == 'cilium' or cilium_deploy_additionally }}" container: true - repo: "{{ cilium_image_repo }}" - tag: "{{ cilium_image_tag }}" - checksum: "{{ cilium_digest_checksum | default(None) }}" + image_name: "{{ cilium_image_repo }}:{{ cilium_image_tag }}" groups: - k8s_cluster cilium_operator: enabled: "{{ kube_network_plugin == 'cilium' or cilium_deploy_additionally }}" container: true - repo: "{{ cilium_operator_image_repo }}-generic" - tag: "{{ cilium_operator_image_tag }}" - checksum: "{{ cilium_operator_digest_checksum | default(None) }}" + image_name: "{{ cilium_operator_image_repo }}-generic:{{ cilium_operator_image_tag }}" groups: - k8s_cluster cilium_hubble_relay: enabled: "{{ cilium_enable_hubble }}" container: true - repo: "{{ cilium_hubble_relay_image_repo }}" - tag: "{{ cilium_hubble_relay_image_tag }}" - checksum: "{{ cilium_hubble_relay_digest_checksum | default(None) }}" + image_name: "{{ cilium_hubble_relay_image_repo }}:{{ cilium_hubble_relay_image_tag }}" groups: - k8s_cluster cilium_certgen: enabled: "{{ kube_network_plugin == 'cilium' }}" container: true - repo: "{{ cilium_certgen_image_repo }}" - tag: "{{ cilium_certgen_image_tag }}" - checksum: "{{ cilium_certgen_digest_checksum | default(None) }}" + image_name: "{{ cilium_certgen_image_repo }}:{{ cilium_certgen_image_tag }}" groups: - k8s_cluster cilium_hubble_ui: enabled: "{{ cilium_enable_hubble }}" container: true - repo: "{{ cilium_hubble_ui_image_repo }}" - tag: "{{ cilium_hubble_ui_image_tag }}" - checksum: "{{ cilium_hubble_ui_digest_checksum | default(None) }}" + image_name: "{{ cilium_hubble_ui_image_repo }}:{{ cilium_hubble_ui_image_tag }}" groups: - k8s_cluster cilium_hubble_ui_backend: enabled: "{{ cilium_enable_hubble }}" container: true - repo: "{{ cilium_hubble_ui_backend_image_repo }}" - tag: "{{ cilium_hubble_ui_backend_image_tag }}" - checksum: "{{ cilium_hubble_ui_backend_digest_checksum | default(None) }}" + image_name: "{{ cilium_hubble_ui_backend_image_repo }}:{{ cilium_hubble_ui_backend_image_tag }}" groups: - k8s_cluster cilium_envoy: enabled: "{{ kube_network_plugin == 'cilium' }}" container: true - repo: "{{ cilium_envoy_image_repo }}" - tag: "{{ cilium_envoy_image_tag }}" - checksum: "{{ cilium_envoy_digest_checksum | default(None) }}" + image_name: "{{ cilium_envoy_image_repo }}:{{ cilium_envoy_image_tag }}" groups: - k8s_cluster @@ -661,27 +644,21 @@ downloads: multus: enabled: "{{ kube_network_plugin_multus }}" container: true - repo: "{{ multus_image_repo }}" - tag: "{{ multus_image_tag }}" - checksum: "{{ multus_digest_checksum | default(None) }}" + image_name: "{{ multus_image_repo }}:{{ multus_image_tag }}" groups: - k8s_cluster flannel: enabled: "{{ kube_network_plugin == 'flannel' }}" container: true - repo: "{{ flannel_image_repo }}" - tag: "{{ flannel_image_tag }}" - checksum: "{{ flannel_digest_checksum | default(None) }}" + image_name: "{{ flannel_image_repo }}:{{ flannel_image_tag }}" groups: - k8s_cluster flannel_init: enabled: "{{ kube_network_plugin == 'flannel' }}" container: true - repo: "{{ flannel_init_image_repo }}" - tag: "{{ flannel_init_image_tag }}" - checksum: "{{ flannel_init_digest_checksum | default(None) }}" + image_name: "{{ flannel_init_image_repo }}:{{ flannel_init_image_tag }}" groups: - k8s_cluster @@ -700,45 +677,35 @@ downloads: calico_node: enabled: "{{ kube_network_plugin == 'calico' }}" container: true - repo: "{{ calico_node_image_repo }}" - tag: "{{ calico_node_image_tag }}" - checksum: "{{ calico_node_digest_checksum | default(None) }}" + image_name: "{{ calico_node_image_repo }}:{{ calico_node_image_tag }}" groups: - k8s_cluster calico_cni: enabled: "{{ kube_network_plugin == 'calico' }}" container: true - repo: "{{ calico_cni_image_repo }}" - tag: "{{ calico_cni_image_tag }}" - checksum: "{{ calico_cni_digest_checksum | default(None) }}" + image_name: "{{ calico_cni_image_repo }}:{{ calico_cni_image_tag }}" groups: - k8s_cluster calico_policy: enabled: "{{ enable_network_policy and kube_network_plugin in ['calico'] }}" container: true - repo: "{{ calico_policy_image_repo }}" - tag: "{{ calico_policy_image_tag }}" - checksum: "{{ calico_policy_digest_checksum | default(None) }}" + image_name: "{{ calico_policy_image_repo }}:{{ calico_policy_image_tag }}" groups: - k8s_cluster calico_typha: enabled: "{{ typha_enabled }}" container: true - repo: "{{ calico_typha_image_repo }}" - tag: "{{ calico_typha_image_tag }}" - checksum: "{{ calico_typha_digest_checksum | default(None) }}" + image_name: "{{ calico_typha_image_repo }}:{{ calico_typha_image_tag }}" groups: - k8s_cluster calico_apiserver: enabled: "{{ calico_apiserver_enabled }}" container: true - repo: "{{ calico_apiserver_image_repo }}" - tag: "{{ calico_apiserver_image_tag }}" - checksum: "{{ calico_apiserver_digest_checksum | default(None) }}" + image_name: "{{ calico_apiserver_image_repo }}:{{ calico_apiserver_image_tag }}" groups: - k8s_cluster @@ -756,81 +723,63 @@ downloads: kube_ovn: enabled: "{{ kube_network_plugin == 'kube-ovn' }}" container: true - repo: "{{ kube_ovn_container_image_repo }}" - tag: "{{ kube_ovn_container_image_tag }}" - checksum: "{{ kube_ovn_digest_checksum | default(None) }}" + image_name: "{{ kube_ovn_container_image_repo }}:{{ kube_ovn_container_image_tag }}" groups: - k8s_cluster kube_router: enabled: "{{ kube_network_plugin == 'kube-router' }}" container: true - repo: "{{ kube_router_image_repo }}" - tag: "{{ kube_router_image_tag }}" - checksum: "{{ kube_router_digest_checksum | default(None) }}" + image_name: "{{ kube_router_image_repo }}:{{ kube_router_image_tag }}" groups: - k8s_cluster pod_infra: enabled: true container: true - repo: "{{ pod_infra_image_repo }}" - tag: "{{ pod_infra_image_tag }}" - checksum: "{{ pod_infra_digest_checksum | default(None) }}" + image_name: "{{ pod_infra_image_repo }}:{{ pod_infra_image_tag }}" groups: - k8s_cluster kube-vip: enabled: "{{ kube_vip_enabled }}" container: true - repo: "{{ kube_vip_image_repo }}" - tag: "{{ kube_vip_image_tag }}" - checksum: "{{ kube_vip_digest_checksum | default(None) }}" + image_name: "{{ kube_vip_image_repo }}:{{ kube_vip_image_tag }}" groups: - kube_control_plane nginx: enabled: "{{ loadbalancer_apiserver_localhost and loadbalancer_apiserver_type == 'nginx' }}" container: true - repo: "{{ nginx_image_repo }}" - tag: "{{ nginx_image_tag }}" - checksum: "{{ nginx_digest_checksum | default(None) }}" + image_name: "{{ nginx_image_repo }}:{{ nginx_image_tag }}" groups: - kube_node haproxy: enabled: "{{ loadbalancer_apiserver_localhost and loadbalancer_apiserver_type == 'haproxy' }}" container: true - repo: "{{ haproxy_image_repo }}" - tag: "{{ haproxy_image_tag }}" - checksum: "{{ haproxy_digest_checksum | default(None) }}" + image_name: "{{ haproxy_image_repo }}:{{ haproxy_image_tag }}" groups: - kube_node coredns: enabled: "{{ dns_mode in ['coredns', 'coredns_dual'] }}" container: true - repo: "{{ coredns_image_repo }}" - tag: "{{ coredns_image_tag }}" - checksum: "{{ coredns_digest_checksum | default(None) }}" + image_name: "{{ coredns_image_repo }}:{{ coredns_image_tag }}" groups: - k8s_cluster nodelocaldns: enabled: "{{ enable_nodelocaldns }}" container: true - repo: "{{ nodelocaldns_image_repo }}" - tag: "{{ nodelocaldns_image_tag }}" - checksum: "{{ nodelocaldns_digest_checksum | default(None) }}" + image_name: "{{ nodelocaldns_image_repo }}:{{ nodelocaldns_image_tag }}" groups: - k8s_cluster dnsautoscaler: enabled: "{{ dns_mode in ['coredns', 'coredns_dual'] and enable_dns_autoscaler }}" container: true - repo: "{{ dnsautoscaler_image_repo }}" - tag: "{{ dnsautoscaler_image_tag }}" - checksum: "{{ dnsautoscaler_digest_checksum | default(None) }}" + image_name: "{{ dnsautoscaler_image_repo }}:{{ dnsautoscaler_image_tag }}" groups: - kube_control_plane @@ -849,72 +798,56 @@ downloads: registry: enabled: "{{ registry_enabled }}" container: true - repo: "{{ registry_image_repo }}" - tag: "{{ registry_image_tag }}" - checksum: "{{ registry_digest_checksum | default(None) }}" + image_name: "{{ registry_image_repo }}:{{ registry_image_tag }}" groups: - kube_node metrics_server: enabled: "{{ metrics_server_enabled }}" container: true - repo: "{{ metrics_server_image_repo }}" - tag: "{{ metrics_server_image_tag }}" - checksum: "{{ metrics_server_digest_checksum | default(None) }}" + image_name: "{{ metrics_server_image_repo }}:{{ metrics_server_image_tag }}" groups: - kube_control_plane local_volume_provisioner: enabled: "{{ local_volume_provisioner_enabled }}" container: true - repo: "{{ local_volume_provisioner_image_repo }}" - tag: "{{ local_volume_provisioner_image_tag }}" - checksum: "{{ local_volume_provisioner_digest_checksum | default(None) }}" + image_name: "{{ local_volume_provisioner_image_repo }}:{{ local_volume_provisioner_image_tag }}" groups: - kube_node local_path_provisioner: enabled: "{{ local_path_provisioner_enabled }}" container: true - repo: "{{ local_path_provisioner_image_repo }}" - tag: "{{ local_path_provisioner_image_tag }}" - checksum: "{{ local_path_provisioner_digest_checksum | default(None) }}" + image_name: "{{ local_path_provisioner_image_repo }}:{{ local_path_provisioner_image_tag }}" groups: - kube_node ingress_alb_controller: enabled: "{{ ingress_alb_enabled }}" container: true - repo: "{{ alb_ingress_image_repo }}" - tag: "{{ alb_ingress_image_tag }}" - checksum: "{{ ingress_alb_controller_digest_checksum | default(None) }}" + image_name: "{{ alb_ingress_image_repo }}:{{ alb_ingress_image_tag }}" groups: - kube_node cert_manager_controller: enabled: "{{ cert_manager_enabled }}" container: true - repo: "{{ cert_manager_controller_image_repo }}" - tag: "{{ cert_manager_controller_image_tag }}" - checksum: "{{ cert_manager_controller_digest_checksum | default(None) }}" + image_name: "{{ cert_manager_controller_image_repo }}:{{ cert_manager_controller_image_tag }}" groups: - kube_node cert_manager_cainjector: enabled: "{{ cert_manager_enabled }}" container: true - repo: "{{ cert_manager_cainjector_image_repo }}" - tag: "{{ cert_manager_cainjector_image_tag }}" - checksum: "{{ cert_manager_cainjector_digest_checksum | default(None) }}" + image_name: "{{ cert_manager_cainjector_image_repo }}:{{ cert_manager_cainjector_image_tag }}" groups: - kube_node cert_manager_webhook: enabled: "{{ cert_manager_enabled }}" container: true - repo: "{{ cert_manager_webhook_image_repo }}" - tag: "{{ cert_manager_webhook_image_tag }}" - checksum: "{{ cert_manager_webhook_digest_checksum | default(None) }}" + image_name: "{{ cert_manager_webhook_image_repo }}:{{ cert_manager_webhook_image_tag }}" groups: - kube_node @@ -945,99 +878,77 @@ downloads: csi_attacher: enabled: "{{ cinder_csi_enabled or aws_ebs_csi_enabled }}" container: true - repo: "{{ csi_attacher_image_repo }}" - tag: "{{ csi_attacher_image_tag }}" - checksum: "{{ csi_attacher_digest_checksum | default(None) }}" + image_name: "{{ csi_attacher_image_repo }}:{{ csi_attacher_image_tag }}" groups: - kube_node csi_provisioner: enabled: "{{ cinder_csi_enabled or aws_ebs_csi_enabled }}" container: true - repo: "{{ csi_provisioner_image_repo }}" - tag: "{{ csi_provisioner_image_tag }}" - checksum: "{{ csi_provisioner_digest_checksum | default(None) }}" + image_name: "{{ csi_provisioner_image_repo }}:{{ csi_provisioner_image_tag }}" groups: - kube_node csi_snapshotter: enabled: "{{ cinder_csi_enabled or aws_ebs_csi_enabled }}" container: true - repo: "{{ csi_snapshotter_image_repo }}" - tag: "{{ csi_snapshotter_image_tag }}" - checksum: "{{ csi_snapshotter_digest_checksum | default(None) }}" + image_name: "{{ csi_snapshotter_image_repo }}:{{ csi_snapshotter_image_tag }}" groups: - kube_node snapshot_controller: enabled: "{{ csi_snapshot_controller_enabled }}" container: true - repo: "{{ snapshot_controller_image_repo }}" - tag: "{{ snapshot_controller_image_tag }}" - checksum: "{{ snapshot_controller_digest_checksum | default(None) }}" + image_name: "{{ snapshot_controller_image_repo }}:{{ snapshot_controller_image_tag }}" groups: - kube_node csi_resizer: enabled: "{{ cinder_csi_enabled or aws_ebs_csi_enabled }}" container: true - repo: "{{ csi_resizer_image_repo }}" - tag: "{{ csi_resizer_image_tag }}" - checksum: "{{ csi_resizer_digest_checksum | default(None) }}" + image_name: "{{ csi_resizer_image_repo }}:{{ csi_resizer_image_tag }}" groups: - kube_node csi_livenessprobe: enabled: "{{ cinder_csi_enabled or aws_ebs_csi_enabled }}" container: true - repo: "{{ csi_livenessprobe_image_repo }}" - tag: "{{ csi_livenessprobe_image_tag }}" - checksum: "{{ csi_livenessprobe_digest_checksum | default(None) }}" + image_name: "{{ csi_livenessprobe_image_repo }}:{{ csi_livenessprobe_image_tag }}" groups: - kube_node csi_node_driver_registrar: enabled: "{{ cinder_csi_enabled or aws_ebs_csi_enabled }}" container: true - repo: "{{ csi_node_driver_registrar_image_repo }}" - tag: "{{ csi_node_driver_registrar_image_tag }}" - checksum: "{{ csi_node_driver_registrar_digest_checksum | default(None) }}" + image_name: "{{ csi_node_driver_registrar_image_repo }}:{{ csi_node_driver_registrar_image_tag }}" groups: - kube_node cinder_csi_plugin: enabled: "{{ cinder_csi_enabled }}" container: true - repo: "{{ cinder_csi_plugin_image_repo }}" - tag: "{{ cinder_csi_plugin_image_tag }}" - checksum: "{{ cinder_csi_plugin_digest_checksum | default(None) }}" + image_name: "{{ cinder_csi_plugin_image_repo }}:{{ cinder_csi_plugin_image_tag }}" groups: - kube_node aws_ebs_csi_plugin: enabled: "{{ aws_ebs_csi_enabled }}" container: true - repo: "{{ aws_ebs_csi_plugin_image_repo }}" - tag: "{{ aws_ebs_csi_plugin_image_tag }}" - checksum: "{{ aws_ebs_csi_plugin_digest_checksum | default(None) }}" + image_name: "{{ aws_ebs_csi_plugin_image_repo }}:{{ aws_ebs_csi_plugin_image_tag }}" groups: - kube_node metallb_speaker: enabled: "{{ metallb_speaker_enabled }}" container: true - repo: "{{ metallb_speaker_image_repo }}" - tag: "{{ metallb_image_tag }}" - checksum: "{{ metallb_speaker_digest_checksum | default(None) }}" + image_name: "{{ metallb_speaker_image_repo }}:{{ metallb_image_tag }}" groups: - kube_control_plane metallb_controller: enabled: "{{ metallb_enabled }}" container: true - repo: "{{ metallb_controller_image_repo }}" - tag: "{{ metallb_image_tag }}" - checksum: "{{ metallb_controller_digest_checksum | default(None) }}" + image_name: "{{ metallb_controller_image_repo }}:{{ metallb_image_tag }}" groups: - kube_control_plane @@ -1070,8 +981,7 @@ downloads: download_defaults: container: false file: false - repo: None - tag: None + image_name: None enabled: false dest: None url: None