This commit is contained in:
2026-07-25 16:11:08 -05:00
parent ad9c44bf28
commit ad90aad959
3 changed files with 69 additions and 33 deletions
+47 -29
View File
@@ -69,12 +69,30 @@ deploy_local_broker() {
fail "broker did not become healthy within 150 seconds"
}
read_env_setting() {
local key="$1"
local value
value="$(
sed -n "s/^[[:space:]]*${key}[[:space:]]*=[[:space:]]*//p" .env |
tail -n 1
)"
value="${value#"${value%%[![:space:]]*}"}"
value="${value%"${value##*[![:space:]]}"}"
value="${value#\"}"
value="${value%\"}"
value="${value#\'}"
value="${value%\'}"
printf '%s' "$value"
}
update_peer_broker() {
local listen_addr
local local_address
local peer_host="${TAPM_UPDATE_PEER_HOST:-}"
local ssh_user="${TAPM_UPDATE_SSH_USER:-root}"
local peer_list="${TAPM_UPDATE_PEERS:-}"
local ssh_user="${TAPM_UPDATE_SSH_USER:-}"
local remote_update_path='/opt/idssys/ta-deployment-broker/update.sh'
local peer_host
local raw_peer
local -a peer_hosts
local -a ssh_options=(
-o BatchMode=yes
-o ConnectTimeout=5
@@ -83,33 +101,33 @@ update_peer_broker() {
)
[[ -f .env ]] || fail ".env was not found in ${SCRIPT_DIR}"
if [[ -z "$peer_host" ]]; then
listen_addr="$(
sed -n 's/^[[:space:]]*TAPM_LISTEN_ADDR[[:space:]]*=[[:space:]]*//p' .env |
tail -n 1
)"
listen_addr="${listen_addr#\"}"
listen_addr="${listen_addr%\"}"
listen_addr="${listen_addr#\'}"
listen_addr="${listen_addr%\'}"
local_address="${listen_addr%:*}"
case "$local_address" in
10.10.1.121) peer_host='10.10.1.122' ;;
10.10.1.122) peer_host='10.10.1.121' ;;
*) fail "unable to determine peer from TAPM_LISTEN_ADDR=${listen_addr}" ;;
esac
if [[ -z "$peer_list" ]]; then
peer_list="$(read_env_setting TAPM_UPDATE_PEERS)"
fi
[[ -n "$peer_list" ]] ||
fail "TAPM_UPDATE_PEERS is not configured in .env"
if [[ -z "$ssh_user" ]]; then
ssh_user="$(read_env_setting TAPM_UPDATE_SSH_USER)"
fi
ssh_user="${ssh_user:-root}"
printf 'Checking peer broker at %s...\n' "$peer_host"
if ! ssh "${ssh_options[@]}" "${ssh_user}@${peer_host}" true; then
printf 'WARNING: peer %s is unavailable over SSH; its update was skipped.\n' "$peer_host" >&2
return 0
fi
if ! ssh "${ssh_options[@]}" "${ssh_user}@${peer_host}" \
"TAPM_UPDATE_LOCAL_ONLY=1 ${remote_update_path} --local-only"; then
fail "peer ${peer_host} is reachable, but its broker update failed"
fi
printf 'Peer broker at %s completed successfully.\n' "$peer_host"
IFS=',' read -r -a peer_hosts <<< "$peer_list"
for raw_peer in "${peer_hosts[@]}"; do
peer_host="${raw_peer#"${raw_peer%%[![:space:]]*}"}"
peer_host="${peer_host%"${peer_host##*[![:space:]]}"}"
[[ -n "$peer_host" ]] || continue
printf 'Checking peer broker at %s...\n' "$peer_host"
if ! ssh "${ssh_options[@]}" "${ssh_user}@${peer_host}" true; then
printf 'WARNING: peer %s is unavailable over SSH; its update was skipped.\n' "$peer_host" >&2
continue
fi
if ! ssh "${ssh_options[@]}" "${ssh_user}@${peer_host}" \
"TAPM_UPDATE_LOCAL_ONLY=1 ${remote_update_path} --local-only"; then
fail "peer ${peer_host} is reachable, but its broker update failed"
fi
printf 'Peer broker at %s completed successfully.\n' "$peer_host"
done
}
if ((POST_PULL == 0)); then