| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081 |
- - name: Set Facts For Worker
- set_fact:
- k8s_controlplane_host: "{{ hostvars[inventory_hostname]['groups']['primary_master_node'][0] }}"
- worker_node_hostname: "{{ inventory_hostname }}"
- - name: Get Upgrade Command For Worker
- environment:
- KUBECONFIG: "{{ ENV_KUBECONFIG }}"
- shell: |
- OCVER="$(kubectl -n onecloud get onecloudclusters default -o=jsonpath='{.spec.version}')"
- NEW_VER="{{upgrade_onecloud_version}}"
- image_repository={{ image_repository }}
- upgrade_onecloud_version={{upgrade_onecloud_version}}
- worker_node_hostname={{worker_node_hostname}}
- if [[ -z "$OCVER" ]] ; then
- echo "get current oc version failed. "
- exit 1
- fi
- if [[ -z "$NEW_VER" ]] ; then
- echo "get new oc version failed. "
- exit 1
- fi
- kubectl get pods --field-selector=spec.nodeName="$worker_node_hostname" --all-namespaces --no-headers -o custom-columns=NAMESPACE:.metadata.namespace,NAME:.metadata.name | while read line
- do
- namespace="$(echo "$line" | awk '{print $1}')"
- pod="$(echo "$line" | awk '{print $2}')"
- kubectl get pod -n "$namespace" "$pod" -o=jsonpath='{range .spec.containers[*]}{.name}={.image}{"\n"}{end}' | while read subline; do
- cmd="kubectl set image -n $namespace pod/$pod $subline"
- if ! echo "$subline" | grep -q ":$OCVER$" && ! echo "$subline" | grep -q ":$NEW_VER$"; then
- continue
- fi
- new_cmd="$(echo $cmd | sed -e "s#:$OCVER\$#:$NEW_VER#")"
- new_cmd="$(echo $new_cmd | sed -E -e "s#=.*/([^/:]*):[^/:]*#=$image_repository/\1:$upgrade_onecloud_version#" -e 's#//#/#g')"
- echo "$new_cmd"
- done
- done | grep -v '/onecloud-operator:' | sed -e '/^$/d' || :
- args:
- executable: /bin/bash
- register: host_deployment_images
- delegate_to: "{{ k8s_controlplane_host }}"
- - name: Parse image names from lines
- set_fact:
- host_image_names: "{{ host_image_names|default([]) + [image_item.split('=')[-1]] }}"
- loop: "{{ host_deployment_images.stdout_lines }}"
- loop_control:
- index_var: item_index
- label: "[{{ (item_index + 1) }} of {{ host_deployment_images.stdout_lines | length }}]"
- loop_var: image_item
- when:
- - host_deployment_images.stdout_lines | length > 0
- - name: Pull Docker images for worker node(s)
- shell: |
- docker pull {{ image_item }}
- loop: "{{ host_image_names | list | unique }}"
- loop_control:
- index_var: item_index
- label: "[{{ (item_index + 1) }} of {{ host_image_names | length }}]"
- loop_var: image_item
- when:
- - host_image_names | default([]) | length > 0
- - name: Apply new images for Host pods
- environment:
- KUBECONFIG: "{{ ENV_KUBECONFIG }}"
- shell: |
- {{image_item}}
- with_items:
- - "{{ host_deployment_images.stdout_lines | list }}"
- args:
- executable: /bin/bash
- register: host_apply_deployment_images
- delegate_to: "{{ k8s_controlplane_host }}"
- when:
- - host_deployment_images.stdout_lines | length > 0
- loop_control:
- index_var: item_index
- label: "[{{ (item_index + 1) }} of {{ host_deployment_images.stdout_lines | length }}]"
- loop_var: image_item
|