manual sourcing

This commit is contained in:
admin 2026-01-30 13:31:48 -07:00
parent 34a6e33cab
commit 15ba00e528

View file

@ -1,51 +1,41 @@
#!/bin/bash #!/bin/bash
cd /docker/keepalived cd /docker/keepalived
# 1. SOURCING # 1. MANUAL VARIABLE EXTRACTION (No more sourcing!)
# Force export of all variables in .env so sed can access them get_env_val() {
if [ -f .env ]; then # Greps the key, gets the value after =, and strips surrounding quotes
echo "Sourcing variables from .env..." grep "^${1}=" .env | cut -d'=' -f2- | sed 's/^"//;s/"$//'
set -a }
source .env
set +a
else
echo "ERROR: .env file not found in $(pwd)"
exit 1
fi
# 2. QUOTE CLEANING LXC_NUM=$(get_env_val "LXC_NUM")
# Remove literal double quotes from the start/end of the string if they exist SLOT_DEFINITIONS=$(get_env_val "SLOT_DEFINITIONS")
SLOT_DEFINITIONS=$(echo "$SLOT_DEFINITIONS" | sed 's/^"//;s/"$//') BASE_PASSWORD=$(get_env_val "BASE_PASSWORD")
# 3. PATHS # Debug check
echo "Generator started for LXC: $LXC_NUM"
# 2. PATHS
CONFIG_DIR="./config" CONFIG_DIR="./config"
CHECKS_DIR="./checks"
HEADER_TPL="./keepalived_header.tpl" HEADER_TPL="./keepalived_header.tpl"
SLOT_TPL="./keepalived_slot.tpl" SLOT_TPL="./keepalived_slot.tpl"
CONFIG_FILE="${CONFIG_DIR}/keepalived.conf" CONFIG_FILE="${CONFIG_DIR}/keepalived.conf"
mkdir -p "$CONFIG_DIR" "$CHECKS_DIR" mkdir -p "$CONFIG_DIR" "./checks"
# 4. BUILD HEADER
if [ -z "$LXC_NUM" ]; then echo "ERROR: LXC_NUM not found in env"; exit 1; fi
# 3. BUILD HEADER
cp "$HEADER_TPL" "$CONFIG_FILE" cp "$HEADER_TPL" "$CONFIG_FILE"
sed -i "s/{{LXC_NUM}}/${LXC_NUM}/g" "$CONFIG_FILE" sed -i "s/{{LXC_NUM}}/${LXC_NUM}/g" "$CONFIG_FILE"
# 5. PARSE SLOTS # 4. PARSE SLOTS
# Using echo | while to ensure the cleaned string is parsed line-by-line
echo "$SLOT_DEFINITIONS" | while IFS=',' read -r s_num s_name s_dep s_state s_prio s_peer s_vip junk echo "$SLOT_DEFINITIONS" | while IFS=',' read -r s_num s_name s_dep s_state s_prio s_peer s_vip junk
do do
[[ -z "$s_num" ]] && continue [[ -z "$s_num" ]] && continue
[[ -z "$s_vip" ]] && continue
echo "Processing Slot $s_num: $s_name" echo "Processing Slot $s_num: $s_name"
TEMP_SLOT="/tmp/slot_${s_num}.conf" TEMP_SLOT="/tmp/slot_${s_num}.conf"
cp "$SLOT_TPL" "$TEMP_SLOT" cp "$SLOT_TPL" "$TEMP_SLOT"
# Password logic (8 char limit) AUTH_PASS="${BASE_PASSWORD:0:7}-${s_num}"
FULL_PASS="${BASE_PASSWORD}-${s_num}"
SHORT_PASS="${FULL_PASS:0:8}"
sed -i "s/{{SLOT_NUM}}/${s_num}/g" "$TEMP_SLOT" sed -i "s/{{SLOT_NUM}}/${s_num}/g" "$TEMP_SLOT"
sed -i "s/{{LXC_NUM}}/${LXC_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/{{PRIORITY}}/${s_prio}/g" "$TEMP_SLOT"
sed -i "s/{{PEER}}/${s_peer}/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/{{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" cat "$TEMP_SLOT" >> "$CONFIG_FILE"
rm "$TEMP_SLOT" rm "$TEMP_SLOT"
done done
# 6. PERMS # 5. PERMS
cp ./check_services.sh "${CHECKS_DIR}/check_services.sh" cp ./check_services.sh ./checks/check_services.sh
chmod +x "${CHECKS_DIR}/check_services.sh" chmod +x ./checks/check_services.sh
echo "Success: keepalived.conf generated."