From 15ba00e528c7d0bf20e66040f7ae55dd829e549d Mon Sep 17 00:00:00 2001 From: admin Date: Fri, 30 Jan 2026 13:31:48 -0700 Subject: [PATCH] manual sourcing --- lxc1/keepalived/deploy_keepalived.sh | 54 +++++++++++----------------- 1 file changed, 21 insertions(+), 33 deletions(-) diff --git a/lxc1/keepalived/deploy_keepalived.sh b/lxc1/keepalived/deploy_keepalived.sh index 8886442..1ae1ee8 100644 --- a/lxc1/keepalived/deploy_keepalived.sh +++ b/lxc1/keepalived/deploy_keepalived.sh @@ -1,51 +1,41 @@ #!/bin/bash cd /docker/keepalived -# 1. SOURCING -# Force export of all variables in .env so sed can access them -if [ -f .env ]; then - echo "Sourcing variables from .env..." - set -a - source .env - set +a -else - echo "ERROR: .env file not found in $(pwd)" - exit 1 -fi +# 1. MANUAL VARIABLE EXTRACTION (No more sourcing!) +get_env_val() { + # Greps the key, gets the value after =, and strips surrounding quotes + grep "^${1}=" .env | cut -d'=' -f2- | sed 's/^"//;s/"$//' +} -# 2. QUOTE CLEANING -# Remove literal double quotes from the start/end of the string if they exist -SLOT_DEFINITIONS=$(echo "$SLOT_DEFINITIONS" | sed 's/^"//;s/"$//') +LXC_NUM=$(get_env_val "LXC_NUM") +SLOT_DEFINITIONS=$(get_env_val "SLOT_DEFINITIONS") +BASE_PASSWORD=$(get_env_val "BASE_PASSWORD") -# 3. PATHS +# Debug check +echo "Generator started for LXC: $LXC_NUM" + +# 2. PATHS CONFIG_DIR="./config" -CHECKS_DIR="./checks" HEADER_TPL="./keepalived_header.tpl" SLOT_TPL="./keepalived_slot.tpl" CONFIG_FILE="${CONFIG_DIR}/keepalived.conf" -mkdir -p "$CONFIG_DIR" "$CHECKS_DIR" - -# 4. BUILD HEADER -if [ -z "$LXC_NUM" ]; then echo "ERROR: LXC_NUM not found in env"; exit 1; fi +mkdir -p "$CONFIG_DIR" "./checks" +# 3. BUILD HEADER cp "$HEADER_TPL" "$CONFIG_FILE" sed -i "s/{{LXC_NUM}}/${LXC_NUM}/g" "$CONFIG_FILE" -# 5. PARSE SLOTS -# Using echo | while to ensure the cleaned string is parsed line-by-line +# 4. PARSE SLOTS echo "$SLOT_DEFINITIONS" | while IFS=',' read -r s_num s_name s_dep s_state s_prio s_peer s_vip junk do [[ -z "$s_num" ]] && continue - [[ -z "$s_vip" ]] && continue - echo "Processing Slot $s_num: $s_name" + TEMP_SLOT="/tmp/slot_${s_num}.conf" cp "$SLOT_TPL" "$TEMP_SLOT" - # Password logic (8 char limit) - FULL_PASS="${BASE_PASSWORD}-${s_num}" - SHORT_PASS="${FULL_PASS:0:8}" + AUTH_PASS="${BASE_PASSWORD:0:7}-${s_num}" sed -i "s/{{SLOT_NUM}}/${s_num}/g" "$TEMP_SLOT" sed -i "s/{{LXC_NUM}}/${LXC_NUM}/g" "$TEMP_SLOT" @@ -55,14 +45,12 @@ do sed -i "s/{{PRIORITY}}/${s_prio}/g" "$TEMP_SLOT" sed -i "s/{{PEER}}/${s_peer}/g" "$TEMP_SLOT" sed -i "s/{{SVC_VIP}}/${s_vip}/g" "$TEMP_SLOT" - sed -i "s/{{AUTH_PASS}}/${SHORT_PASS}/g" "$TEMP_SLOT" + sed -i "s/{{AUTH_PASS}}/${AUTH_PASS}/g" "$TEMP_SLOT" cat "$TEMP_SLOT" >> "$CONFIG_FILE" rm "$TEMP_SLOT" done -# 6. PERMS -cp ./check_services.sh "${CHECKS_DIR}/check_services.sh" -chmod +x "${CHECKS_DIR}/check_services.sh" - -echo "Success: keepalived.conf generated." \ No newline at end of file +# 5. PERMS +cp ./check_services.sh ./checks/check_services.sh +chmod +x ./checks/check_services.sh \ No newline at end of file