#!/bin/bash while getopts "c:h" opt; do case $opt in c) CLUSTER="${OPTARG}" ;; h) help && exit 0 ;; :) echo "Option -$OPTARG requires an argument." exit 1 ;; *) help && exit 0 esac done if [[ -z "${CLUSTER}" ]]; then echo "Please specify a cluster name." exit 1 fi export KUBECONFIG=~/.kube/mattox/${CLUSTER} kubeconfig=~/.kube/mattox/${CLUSTER} cd ~/scripts/rolling-patching/ check_ssh() { echo "Checking ${server}" until ssh -q -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no root@${server} 'uptime' > /dev/null do echo "Trying again..." sleep 1 done } echo "Starting patching..." for server in `kubectl --insecure-skip-tls-verify get nodes -o name | awk -F '/' '{print $2}'` do i=0 if ping -c 1 $server then echo "Server is pingable..." echo "Draining node..." #kubectl --insecure-skip-tls-verify --kubeconfig ${kubeconfig} cordon ${server} kubectl --kubeconfig ${kubeconfig} drain --delete-emptydir-data --ignore-daemonsets ${server} echo "Running apt update and upgrade" ~/scripts/prep-a-server ${server} echo "Sleeping for 60 seconds..." sleep 60 check_ssh echo "Running do-release-upgrade" ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no root@${server} 'sed "s/Prompt=.*/Prompt=normal/g" /etc/update-manager/release-upgrades; export DEBIAN_FRONTEND=noninteractive; do-release-upgrade -f DistUpgradeViewNonInteractive; reboot' echo "Sleeping for 60 seconds..." sleep 60 check_ssh echo "Uncordon node..," kubectl --insecure-skip-tls-verify --kubeconfig ${kubeconfig} uncordon ${server} else echo "Skipping..." fi done