From ad74b4b3e06a9e25677659b1fc6cb761735aef8e Mon Sep 17 00:00:00 2001 From: William Wernert Date: Wed, 18 Nov 2020 12:29:54 -0500 Subject: [PATCH] [refactor][fix] Update reinstall logic * Only set reinstall flag if new accept_changes file exists * Instead of stopping highstate from running, kill all salt processes and remove their configs * Make end of non-reinstall logs clear in cases where user cancels (and log not rotated) --- setup/so-functions | 17 +++++------------ setup/so-setup | 20 +++++++++----------- setup/so-variables | 3 +++ setup/so-whiptail | 6 +++++- 4 files changed, 22 insertions(+), 24 deletions(-) diff --git a/setup/so-functions b/setup/so-functions index c21f8407a..1d6ac642c 100755 --- a/setup/so-functions +++ b/setup/so-functions @@ -1382,20 +1382,13 @@ reinstall_init() { info "Putting system in state to run setup again" { - local minion_config=/etc/salt/minion + rm -f "$change_file" - # Remove startup_states from minion config so we don't immediately highstate when salt starts back up - if [[ -f $minion_config ]] && grep -q "startup_states" $minion_config; then - sed -i '/startup_states/d' $minion_config - fi + # Kill any salt processes + pkill -9 -ef /usr/bin/salt - if command -v salt-call &> /dev/null; then - # Disable schedule so highstate doesn't start running during the install - salt-call -l info schedule.disable - - # Kill any currently running salt jobs, also to prevent issues with highstate. - salt-call -l info saltutil.kill_all_jobs - fi + # Remove all salt configs + rm -rf /etc/salt/global /etc/salt/minion /etc/salt/master /etc/salt/pki/* if command -v docker &> /dev/null; then # Stop and remove all so-* containers so files can be changed with more safety diff --git a/setup/so-setup b/setup/so-setup index 8c6378150..24089dffc 100755 --- a/setup/so-setup +++ b/setup/so-setup @@ -24,19 +24,10 @@ fi cd "$(dirname "$0")" || exit 255 -source ./so-variables - -is_reinstall=false -if [[ -f $setup_log ]]; then - is_reinstall=true - - # Move last setup log to backup - mv $setup_log $setup_log.bak -fi - source ./so-functions source ./so-common-functions source ./so-whiptail +source ./so-variables # Parse command line arguments setup_type=$1 @@ -63,6 +54,13 @@ while [[ $# -gt 0 ]]; do esac done +is_reinstall=false +if [[ -f $change_file ]]; then + is_reinstall=true + + # Move last setup log to backup + mv "$setup_log" "$setup_log.bak" +fi # Begin Installation pre-processing parse_install_username @@ -320,7 +318,6 @@ if [[ $is_import ]]; then PLAYBOOK=0 fi - # Start user prompts if [[ $is_helix || $is_sensor ]]; then @@ -428,6 +425,7 @@ fi if [[ $is_manager || $is_import ]]; then whiptail_so_allow; fi whiptail_make_changes +touch $change_file # From here on changes will be made. diff --git a/setup/so-variables b/setup/so-variables index 83b9b4325..8c85954c2 100644 --- a/setup/so-variables +++ b/setup/so-variables @@ -21,6 +21,9 @@ export node_es_port setup_log="/root/sosetup.log" export setup_log +change_file="/root/accept_changes" +export change_file + filesystem_root=$(df / | awk '$3 ~ /[0-9]+/ { print $2 * 1000 }') export filesystem_root diff --git a/setup/so-whiptail b/setup/so-whiptail index a1f07868c..2c47b69e1 100755 --- a/setup/so-whiptail +++ b/setup/so-whiptail @@ -168,8 +168,12 @@ whiptail_cancel() { echo "/root/installtmp removed"; } >> $setup_log 2>&1 fi - exit + echo "----------" >> "$setup_log" 2>&1 + info "User cancelled setup, no changes made." + echo "----------" >> "$setup_log" 2>&1 + + exit } whiptail_check_exitstatus() {