From d39b374055da79f29eb3d44b2d0e8d091d830a68 Mon Sep 17 00:00:00 2001 From: Bill Erickson Date: Tue, 10 Jan 2017 11:49:35 -0500 Subject: [PATCH] OS update script staged updates Support update/upgrade in one stage, followed by dist-upgrade in a secondary stage with optional reboot in between. The goal is to reduce the kernel / grub install errors for prod servers, where grub fails to install correctly after dist-upgrade, requiring a manual grub reinstall. Signed-off-by: Bill Erickson --- KCLS/admin-scripts/os-update.sh | 62 +++++++++++++++++++++++++++++++++-------- 1 file changed, 50 insertions(+), 12 deletions(-) diff --git a/KCLS/admin-scripts/os-update.sh b/KCLS/admin-scripts/os-update.sh index 1b86d08540..cf99f5571b 100755 --- a/KCLS/admin-scripts/os-update.sh +++ b/KCLS/admin-scripts/os-update.sh @@ -1,18 +1,56 @@ #!/bin/bash # Convenience script for updating packages on debian-based OS'es -DO_REBOOT="" +set -euo pipefail +STAGE=0 +UPDATE_ALL="" -apt-get update; -apt-get -y autoremove; -apt-get -y dist-upgrade; +function do_reboot { + echo "" + echo "--" + echo "Reboot? Type 'yes' to continue. Control-c to exit" + echo "--" + + CONFIRM_REBOOT="" + read CONFIRM_REBOOT; + + if [ "$CONFIRM_REBOOT" = "yes" ]; then + reboot; + fi; +} + +function upgrade1 { + echo "Upgrade stage 1..." + apt-get update; + apt-get -y autoremove; + apt-get -y upgrade; + apt-get -y clean; +} + +function upgrade2 { + echo "Upgrade stage 2..." + apt-get -y dist-upgrade; +} + +while getopts "as:" opt; do + case $opt in + a) UPDATE_ALL="1";; + s) STAGE=$OPTARG;; + esac +done; + +if [ -n "$UPDATE_ALL" ]; then + upgrade1; + upgrade2; + do_reboot; +elif [ $STAGE == 1 ]; then + upgrade1; + do_reboot; +elif [ $STAGE == 2 ]; then + upgrade2; + do_reboot; +else + echo " use -s 1/2 or -a for full update" +fi -echo "" -echo "--" -echo "Reboot? Type 'yes' to continue. Control-c to exit" -echo "--" -read DO_REBOOT; -if [ "$DO_REBOOT" = "yes" ]; then - reboot; -fi; -- 2.11.0