| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- - name: Set Facts For Worker
- set_fact:
- k8s_controlplane_host: "{{ hostvars[inventory_hostname]['groups']['primary_master_node'][0] }}"
- - name: Get Current Version
- environment:
- KUBECONFIG: "{{ ENV_KUBECONFIG }}"
- shell: |
- {{ K3S_CMDLINE_PREFIX }} kubectl -n onecloud get onecloudclusters default -o=jsonpath='{.spec.version}'
- args:
- executable: /bin/bash
- register: current_oc_version
- retries: 3
- delay: 15
- until: current_oc_version.rc == 0
- - name: Prepare image list
- environment:
- KUBECONFIG: "{{ ENV_KUBECONFIG }}"
- shell: |
- OCVER=$({{ K3S_CMDLINE_PREFIX }} kubectl -n onecloud get onecloudclusters default -o=jsonpath='{.spec.version}')
- nslist="$({{ K3S_CMDLINE_PREFIX }} kubectl get namespace | tail -n +2 | awk '{print $1}' | xargs)"
- namespace=onecloud
- typ=deployment
- image_repository={{ image_repository }}
- upgrade_onecloud_version={{upgrade_onecloud_version}}
- kubectl get $typ -n $namespace -o jsonpath='{range .items[*]}{@.metadata.name}{"@"}{@.spec.template.spec.containers[*].name}{"%"}{@.spec.template.spec.containers[*].image}{"\n"}{end}'} | while read line; do
- dep=$(echo $line | awk -F@ '{print $1}')
- names=($(echo $line | sed -e 's#.*@##g' -e 's#%.*$##g'))
- images=($(echo $line | sed -e 's#.*%##'))
- for idx in ${!names[@]}; do
- img="${images[$idx]}"
- if ! echo "$img" | grep -Pq ":$OCVER\b|:$upgrade_onecloud_version\b" ; then
- continue
- fi
- img="$(echo "$img" | sed -E -e "s#.*/([^/:]*):[^/:]*#$image_repository/\1:$upgrade_onecloud_version#" -e 's#//#/#g')"
- echo -e "kubectl set image -n $namespace $typ/$dep \c"
- echo -e "${names[$idx]}=$img \c"
- done
- echo
- done | sort -u | sed -e 's#^ *##' -e 's# *$##' -e 's#\s*kubectl set image#\nkubectl set image#g' | grep -v '/onecloud-operator:' | sed -e '/^$/d' || :
- kubectl get $typ -n $namespace -o jsonpath='{range .items[*]}{@.metadata.name}{"@"}{@.spec.template.spec.initContainers[*].name}{"%"}{@.spec.template.spec.initContainers[*].image}{"\n"}{end}'} | while read line; do
- if ! echo "$line" | grep -q '@%$'; then
- dep=$(echo $line | awk -F@ '{print $1}')
- img=$(echo "$line" | sed -e 's#.*%##')
- echo -e "kubectl set image -n $namespace $typ/$dep \c"
- img="$(echo "$img" | sed -E -e "s#.*/([^/:]*):[^/:]*#$image_repository/\1:$upgrade_onecloud_version#" -e 's#//#/#g')"
- echo -e "init=$img \c"
- fi
- echo
- done | sed -e 's# kubectl#\nkubectl#g' |sort -u | sed -e 's#^ *##' -e 's# *$##' -e 's#\s*kubectl set image#\nkubectl set image#g' | grep -v '/onecloud-operator:' | sed -e '/^$/d' || :
- args:
- executable: /bin/bash
- register: oc_deployment_images
- - name: Parse image names from lines
- set_fact:
- oc_image_names: "{{ oc_image_names|default([]) + [image_item.split('=')[-1]] }}"
- loop: "{{ oc_deployment_images.stdout_lines }}"
- loop_control:
- index_var: item_index
- label: "[{{ (item_index + 1) }} of {{ oc_deployment_images.stdout_lines | length }}]"
- loop_var: image_item
- when:
- - oc_deployment_images.stdout_lines | length > 0
- - name: Parse image names from lines
- set_fact:
- oc_image_names: "{{ oc_image_names | list | unique }}"
- when:
- - oc_image_names | default([]) | length > 0
- - name: Prepare images on controller(s)
- shell: |
- docker pull {{ image_item }} || :
- loop: "{{ oc_image_names }}"
- loop_control:
- index_var: item_index
- label: "[{{ (item_index + 1) }} of {{ oc_image_names|length }}]"
- loop_var: image_item
- when:
- - oc_image_names | default([]) | length > 0
- - name: Wait until all pods running
- include_tasks: "check-and-wait.yml"
- - debug: var=remaining_imgs_count
- - name: Ensurance upgrade 1
- include_tasks: "check-and-wait.yml"
- when:
- - remaining_imgs_count | default(0) | int > 0
- - name: Ensurance upgrade 2
- include_tasks: "check-and-wait.yml"
- when:
- - remaining_imgs_count | default(0) | int > 0
- - name: Ensurance upgrade 3
- include_tasks: "check-and-wait.yml"
- when:
- - remaining_imgs_count | default(0) | int > 0
|