Add infrastructure packages: terraform-pve, ansible-push, wolfstack-keepalived, terraform-pve-vm

This commit is contained in:
Artemis
2026-06-14 19:52:52 -04:00
parent e54307d46d
commit 6f4c54cdbb
49 changed files with 2031 additions and 0 deletions

View File

@@ -0,0 +1,114 @@
#!/bin/bash
# ============================================================
# WolfStack Keepalived Deploy Script
# Usage:
# sudo bash deploy.sh [install] [node1-primary|node2-secondary|node3-tertiary]
#
# Examples:
# sudo bash deploy.sh install # install + auto-detect
# sudo bash deploy.sh node1-primary # deploy role, no install
# sudo bash deploy.sh install node1-primary # install + deploy role
# ============================================================
set -e
NODE_TYPE=""
CONF_DIR="/home/jarvis/wolfstack-keepalived"
KEEPALIVED_CONF="/etc/keepalived/keepalived.conf"
detect_node() {
local ip
ip=$(hostname -I | tr ' ' '\n' | grep -E '^192\.168\.' | head -n1)
[[ -z "$ip" ]] && ip=$(hostname -I | awk '{print $1}')
case "$ip" in
192.168.50.41)
NODE_TYPE="node1-primary"
;;
192.168.5.214)
NODE_TYPE="node2-secondary"
;;
192.168.15.182)
NODE_TYPE="node3-tertiary"
;;
*)
echo "ERROR: Could not auto-detect node type from IP: $ip"
echo "Please specify manually: node1-primary | node2-secondary | node3-tertiary"
exit 1
;;
esac
echo "Detected IP: $ip -> $NODE_TYPE"
}
install_keepalived() {
if command -v apt-get &>/dev/null; then
echo "Installing keepalived (Debian/Ubuntu)..."
sudo apt-get update -qq
sudo apt-get install -y keepalived netcat-openbsd
elif command -v dnf &>/dev/null; then
echo "Installing keepalived (RHEL/Fedora)..."
sudo dnf install -y keepalived nc
elif command -v zypper &>/dev/null; then
echo "Installing keepalived (openSUSE)..."
sudo zypper install -y keepalived netcat-openbsd
elif command -v pacman &>/dev/null; then
echo "Installing keepalived (Arch)..."
sudo pacman -Sy --noconfirm keepalived openbsd-netcat
else
echo "ERROR: Unsupported package manager. Install keepalived manually."
exit 1
fi
}
deploy_config() {
local src="$CONF_DIR/keepalived-${NODE_TYPE}.conf"
if [[ ! -f "$src" ]]; then
echo "ERROR: Config not found: $src"
exit 1
fi
echo "Deploying $src -> $KEEPALIVED_CONF"
sudo mkdir -p /etc/keepalived
sudo cp "$src" "$KEEPALIVED_CONF"
sudo chmod 644 "$KEEPALIVED_CONF"
}
enable_service() {
if systemctl is-active --quiet keepalived 2>/dev/null; then
echo "Keepalived already running. Restarting to pick up new config..."
sudo systemctl restart keepalived
else
echo "Enabling and starting keepalived..."
sudo systemctl enable keepalived --now
fi
sleep 1
sudo systemctl status keepalived --no-pager
}
# --- main ---
ARGS=("$@")
# Check if first arg is 'install'
if [[ "${ARGS[0]:-}" == "install" ]]; then
install_keepalived
ARGS=("${ARGS[@]:1}") # remove 'install' from args
fi
# If a node type arg remains, use it; otherwise auto-detect
if [[ -n "${ARGS[0]:-}" ]]; then
NODE_TYPE="${ARGS[0]}"
echo "Using provided node type: $NODE_TYPE"
else
detect_node
fi
deploy_config
enable_service
echo ""
echo "========================================"
echo "Keepalived deployed for $NODE_TYPE"
echo "VIP should appear on this node if it is MASTER."
echo "Check: ip addr show | grep 192.168.63.254"
echo "========================================"