- /opt/fw/deploy.sh — simple wrapper, user entry point
- /opt/fw/app/main.py — deploy script
- /opt/fw/app/fw.conf — node config
- /opt/fw/app/state.json — deployment state
- Instances stay at /opt/fw/{name}/wallarm/
73 lines
3.4 KiB
Bash
73 lines
3.4 KiB
Bash
#!/bin/bash
|
|
# ==============================================================================
|
|
# Wallarm Deployment Bootstrap
|
|
# ==============================================================================
|
|
# Installs Python 3.12 via pyenv (cross-distro), then runs deploy.py.
|
|
# curl -fsSL ".../setup.sh" | bash
|
|
# sudo /opt/fw/deploy.py
|
|
# ==============================================================================
|
|
set -euo pipefail
|
|
|
|
BOLD='\033[1m'; GREEN='\033[0;32m'; YELLOW='\033[1;33m'; RED='\033[0;31m'; NC='\033[0m'
|
|
REPO="https://git.sechpoint.app/customer-engineering/wallarm/raw/branch/main/python"
|
|
WALLARM_DIR="/opt/fw"
|
|
APP_DIR="${WALLARM_DIR}/app"
|
|
|
|
echo -e "${BOLD}Wallarm Bootstrap${NC}"
|
|
|
|
# ── Install curl/git if missing ───────────────────────────────────────
|
|
if ! command -v curl >/dev/null 2>&1 && ! command -v wget >/dev/null 2>&1; then
|
|
apt-get update -qq 2>/dev/null && apt-get install -y -qq curl 2>/dev/null || true
|
|
fi
|
|
|
|
# ── Ensure Python 3.10+ is available ─────────────────────────────────
|
|
PYTHON_BIN=""
|
|
if command -v python3 >/dev/null 2>&1 && python3 -c "import sys; exit(0 if sys.version_info >= (3,10) else 1)" 2>/dev/null; then
|
|
PYTHON_BIN="python3"
|
|
elif [ -f "$HOME/.pyenv/versions/3.12.0/bin/python3" ]; then
|
|
PYTHON_BIN="$HOME/.pyenv/versions/3.12.0/bin/python3"
|
|
else
|
|
echo -e "${YELLOW}Installing Python 3...${NC}"
|
|
# Try distro package first (fast)
|
|
if command -v apt-get >/dev/null 2>&1; then
|
|
apt-get update -qq && apt-get install -y -qq python3 2>/dev/null
|
|
elif command -v yum >/dev/null 2>&1; then
|
|
yum install -y -q python3 2>/dev/null
|
|
elif command -v dnf >/dev/null 2>&1; then
|
|
dnf install -y -q python3 2>/dev/null
|
|
elif command -v apk >/dev/null 2>&1; then
|
|
apk add --no-cache python3 2>/dev/null
|
|
fi
|
|
if command -v python3 >/dev/null 2>&1; then
|
|
PYTHON_BIN="python3"
|
|
else
|
|
# Last resort: pyenv (slow but works anywhere)
|
|
echo -e "${YELLOW}Building Python via pyenv (3-5 min)...${NC}"
|
|
apt-get install -y -qq make build-essential libssl-dev zlib1g-dev \
|
|
libbz2-dev libreadline-dev libsqlite3-dev libffi-dev liblzma-dev 2>/dev/null || true
|
|
curl -fsSL https://pyenv.run | bash 2>/dev/null
|
|
export PYENV_ROOT="$HOME/.pyenv"
|
|
export PATH="$PYENV_ROOT/bin:$PATH"
|
|
eval "$(pyenv init -)" 2>/dev/null
|
|
pyenv install 3.12.0 -s 2>/dev/null
|
|
pyenv global 3.12.0
|
|
PYTHON_BIN="$HOME/.pyenv/versions/3.12.0/bin/python3"
|
|
fi
|
|
fi
|
|
|
|
echo -e "${GREEN}Python: $($PYTHON_BIN --version)${NC}"
|
|
|
|
# ── Download deploy.py + wrapper ─────────────────────────────────────
|
|
mkdir -p "$APP_DIR"
|
|
if command -v curl >/dev/null 2>&1; then
|
|
curl -fsSL "${REPO}/deploy.py" -o "${APP_DIR}/main.py"
|
|
curl -fsSL "https://git.sechpoint.app/customer-engineering/wallarm/raw/branch/main/deploy.sh" -o "${WALLARM_DIR}/deploy.sh"
|
|
else
|
|
wget -q "${REPO}/deploy.py" -O "${APP_DIR}/main.py"
|
|
wget -q "https://git.sechpoint.app/customer-engineering/wallarm/raw/branch/main/deploy.sh" -O "${WALLARM_DIR}/deploy.sh"
|
|
fi
|
|
chmod +x "${APP_DIR}/main.py" "${WALLARM_DIR}/deploy.sh"
|
|
|
|
echo
|
|
echo -e "${GREEN}${BOLD}Ready!${NC}"
|
|
echo -e " ${GREEN}sudo /opt/fw/deploy.sh${NC}"
|