moved sh and updated keepalived deploy script
This commit is contained in:
parent
33a44e3164
commit
be0be864fb
3 changed files with 29 additions and 16 deletions
|
|
@ -1,37 +1,47 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
cd /docker/keepalived
|
# 1. ROBUST ENV SOURCING (Strips quotes and exports vars)
|
||||||
|
NV_PATH="/docker/keepalived/.env"
|
||||||
|
if [ -f "$ENV_PATH" ]; then
|
||||||
|
while read -r line || [ -n "$line" ]; do
|
||||||
|
# Skip comments and empty lines
|
||||||
|
[[ "$line" =~ ^#.*$ ]] && continue
|
||||||
|
[[ -z "$line" ]] && continue
|
||||||
|
|
||||||
# 1. MANUAL EXTRACTION
|
# Export the variable, removing literal double quotes
|
||||||
get_env_val() {
|
export "${line//\"/}"
|
||||||
grep "^${1}=" .env | cut -d'=' -f2- | sed 's/^"//;s/"$//'
|
done < "$ENV_PATH"
|
||||||
}
|
echo "Successfully loaded environment from $ENV_PATH"
|
||||||
|
else
|
||||||
|
echo "ERROR: .env file not found!"
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
|
||||||
LXC_NUM=$(get_env_val "LXC_NUM")
|
# 2. PATHS & HEADER
|
||||||
SLOT_DEFINITIONS=$(get_env_val "SLOT_DEFINITIONS")
|
|
||||||
BASE_PASSWORD=$(get_env_val "BASE_PASSWORD")
|
|
||||||
|
|
||||||
# 2. PATHS
|
|
||||||
CONFIG_FILE="./config/keepalived.conf"
|
CONFIG_FILE="./config/keepalived.conf"
|
||||||
mkdir -p ./config ./checks
|
mkdir -p ./config ./checks
|
||||||
cp "./keepalived_header.tpl" "$CONFIG_FILE"
|
cp "./keepalived_header.tpl" "$CONFIG_FILE"
|
||||||
|
|
||||||
|
# Replace global header vars
|
||||||
sed -i "s/{{LXC_NUM}}/${LXC_NUM}/g" "$CONFIG_FILE"
|
sed -i "s/{{LXC_NUM}}/${LXC_NUM}/g" "$CONFIG_FILE"
|
||||||
|
|
||||||
# 3. DUAL-STAGE PARSING
|
# 3. DUAL-STAGE PARSING
|
||||||
# First, we split the string into individual slots using the semicolon
|
# Split the string into individual slots using the semicolon
|
||||||
IFS=';' read -ra SLOTS <<< "$SLOT_DEFINITIONS"
|
IFS=';' read -ra SLOTS <<< "$SLOT_DEFINITIONS"
|
||||||
|
|
||||||
for SLOT in "${SLOTS[@]}"; do
|
for SLOT in "${SLOTS[@]}"; do
|
||||||
# Now we split the individual slot by commas
|
# Split the individual slot by commas
|
||||||
IFS=',' read -r s_num s_name s_dep s_state s_prio s_peer s_vip junk <<< "$SLOT"
|
IFS=',' read -r s_num s_name s_dep s_state s_prio s_peer s_vip junk <<< "$SLOT"
|
||||||
|
|
||||||
[[ -z "$s_num" ]] && continue
|
[[ -z "$s_num" ]] && continue
|
||||||
echo "Processing Slot $s_num: $s_name"
|
echo "Processing Slot $s_num: $s_name (VIP: $s_vip)"
|
||||||
|
|
||||||
TEMP_SLOT="/tmp/slot_${s_num}.conf"
|
TEMP_SLOT="/tmp/slot_${s_num}.conf"
|
||||||
cp "./keepalived_slot.tpl" "$TEMP_SLOT"
|
cp "./keepalived_slot.tpl" "$TEMP_SLOT"
|
||||||
|
|
||||||
|
# Generate unique auth pass from the base password
|
||||||
AUTH_PASS="${BASE_PASSWORD:0:7}-${s_num}"
|
AUTH_PASS="${BASE_PASSWORD:0:7}-${s_num}"
|
||||||
|
|
||||||
|
# Perform replacements
|
||||||
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"
|
||||||
sed -i "s/{{SVC_NAME}}/${s_name}/g" "$TEMP_SLOT"
|
sed -i "s/{{SVC_NAME}}/${s_name}/g" "$TEMP_SLOT"
|
||||||
|
|
@ -42,10 +52,13 @@ for SLOT in "${SLOTS[@]}"; do
|
||||||
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}}/${AUTH_PASS}/g" "$TEMP_SLOT"
|
sed -i "s/{{AUTH_PASS}}/${AUTH_PASS}/g" "$TEMP_SLOT"
|
||||||
|
|
||||||
|
# Append to main config and cleanup temp
|
||||||
cat "$TEMP_SLOT" >> "$CONFIG_FILE"
|
cat "$TEMP_SLOT" >> "$CONFIG_FILE"
|
||||||
rm "$TEMP_SLOT"
|
rm "$TEMP_SLOT"
|
||||||
done
|
done
|
||||||
|
|
||||||
# 4. FINALIZE
|
# 4. FINALIZE SCRIPTS
|
||||||
cp ./check_services.sh ./checks/check_services.sh
|
cp ./check_services.sh ./checks/check_services.sh
|
||||||
chmod +x ./checks/check_services.sh
|
chmod +x ./checks/check_services.sh
|
||||||
|
|
||||||
|
echo "Keepalived configuration generated successfully."
|
||||||
Loading…
Reference in a new issue