94 lines
2.5 KiB
Bash
Executable File
94 lines
2.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
# deploy.sh — Deploy inference scripts to remote servers
|
|
#
|
|
# Usage: ./deploy.sh [TARGET] [SCRIPT]
|
|
# TARGET: dankserver, dankclaw, or all
|
|
# SCRIPT: Script name to deploy (default: all scripts in scripts/)
|
|
|
|
TARGET="${1:-all}"
|
|
SCRIPT="${2:-}"
|
|
|
|
# Remote configuration
|
|
declare -A REMOTE_HOSTS
|
|
REMOTE_HOSTS=(
|
|
["dankserver"]="dank@dankserver"
|
|
["dankclaw"]="dank@dankclaw"
|
|
)
|
|
|
|
declare -A REMOTE_DIRS
|
|
REMOTE_DIRS=(
|
|
["dankserver"]="/home/dank/vllm"
|
|
["dankclaw"]="/home/dank/vllm"
|
|
)
|
|
|
|
declare -A REMOTE_SERVICES
|
|
REMOTE_SERVICES=(
|
|
["dankserver"]="vllm-awq-qwen36.service"
|
|
["dankclaw"]="vllm-thinkingcap.service"
|
|
)
|
|
|
|
deploy_to() {
|
|
local target="$1"
|
|
local remote="${REMOTE_HOSTS[$target]}"
|
|
local remote_dir="${REMOTE_DIRS[$target]}"
|
|
local service="${REMOTE_SERVICES[$target]}"
|
|
|
|
echo "=== Deploying to $target ==="
|
|
|
|
# Create remote directory if it doesn't exist
|
|
sshpass -p 'Assface.3241' ssh "$remote" "mkdir -p $remote_dir"
|
|
|
|
# Deploy scripts
|
|
if [ -n "$SCRIPT" ]; then
|
|
if [ -f "scripts/$SCRIPT" ]; then
|
|
echo " Deploying scripts/$SCRIPT..."
|
|
sshpass -p 'Assface.3241' scp "scripts/$SCRIPT" "$remote:$remote_dir/$SCRIPT"
|
|
else
|
|
echo " ERROR: scripts/$SCRIPT not found"
|
|
return 1
|
|
fi
|
|
else
|
|
for script in scripts/*.sh; do
|
|
if [ -f "$script" ]; then
|
|
local name=$(basename "$script")
|
|
echo " Deploying $name..."
|
|
sshpass -p 'Assface.3241' scp "$script" "$remote:$remote_dir/$name"
|
|
fi
|
|
done
|
|
fi
|
|
|
|
# Make scripts executable
|
|
if [ -n "$SCRIPT" ]; then
|
|
sshpass -p 'Assface.3241' ssh "$remote" "chmod +x $remote_dir/$SCRIPT"
|
|
else
|
|
sshpass -p 'Assface.3241' ssh "$remote" "chmod +x $remote_dir/*.sh"
|
|
fi
|
|
|
|
# Restart service if it exists
|
|
echo " Restarting $service..."
|
|
sshpass -p 'Assface.3241' ssh "$remote" "echo 'Assface.3241' | sudo -S systemctl restart $service 2>/dev/null || echo 'Service $service not found or failed'"
|
|
|
|
echo " Deploy to $target complete"
|
|
echo ""
|
|
}
|
|
|
|
case "$TARGET" in
|
|
dankserver|dankclaw)
|
|
deploy_to "$TARGET"
|
|
;;
|
|
all)
|
|
for target in "${!REMOTE_HOSTS[@]}"; do
|
|
deploy_to "$target"
|
|
done
|
|
;;
|
|
*)
|
|
echo "ERROR: Unknown target $TARGET"
|
|
echo "Usage: $0 [dankserver|dankclaw|all] [script]"
|
|
exit 1
|
|
;;
|
|
esac
|
|
|
|
echo "=== Deployment complete ==="
|