Add retry logic around salt key acceptance during setup

This commit is contained in:
Jason Ertel
2021-01-10 00:56:10 -05:00
parent 95a9d14832
commit 63047b4b85
3 changed files with 22 additions and 3 deletions

View File

@@ -141,6 +141,25 @@ get_random_value() {
head -c 5000 /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w $length | head -n 1 head -c 5000 /dev/urandom | tr -dc 'a-zA-Z0-9' | fold -w $length | head -n 1
} }
retry() {
maxAttempts=$1
sleepDelay=$2
cmd=$3
attempt=0
while [[ $attempt -lt $maxAttempts ]]; do
attempt=$((attempt+1))
logCmd "$cmd"
exitcode=$?
if [[ $exitcode -eq 0 ]]; then
return $exitCode
fi
info "Command failed with exit code $exitcode; will retry in $sleepDelay seconds ($attempt / $maxAttempts)..."
sleep $sleepDelay
done
error "Command continues to fail; giving up."
return 1
}
wait_for_apt() { wait_for_apt() {
local progress_callback=$1 local progress_callback=$1

View File

@@ -1972,7 +1972,7 @@ set_progress_str() {
printf '%s\n' \ printf '%s\n' \
'----'\ '----'\
"$percentage% - ${progress_bar_text^^}"\ info "$percentage% - ${progress_bar_text^^}"\
"----" >> "$setup_log" 2>&1 "----" >> "$setup_log" 2>&1
} }

View File

@@ -637,12 +637,12 @@ set_redirect >> $setup_log 2>&1
if [[ $is_minion ]]; then if [[ $is_minion ]]; then
set_progress_str 20 'Accepting Salt key on manager' set_progress_str 20 'Accepting Salt key on manager'
accept_salt_key_remote >> $setup_log 2>&1 retry 20 10 accept_salt_key_remote
fi fi
if [[ $is_manager || $is_import || $is_helix ]]; then if [[ $is_manager || $is_import || $is_helix ]]; then
set_progress_str 20 'Accepting Salt key' set_progress_str 20 'Accepting Salt key'
salt-key -ya "$MINION_ID" >> $setup_log 2>&1 retry 20 10 "salt-key -ya $MINION_ID"
fi fi
set_progress_str 21 'Copying minion pillars to manager' set_progress_str 21 'Copying minion pillars to manager'