diff --git a/setup.sh b/setup.sh index 8cb5cd7..e1d7318 100644 --- a/setup.sh +++ b/setup.sh @@ -1,98 +1,59 @@ #!/bin/bash # ============================================================================== -# Wallarm Deployment — Bootstrap +# Wallarm Deployment Bootstrap # ============================================================================== -# Creates /opt/wallarm/, downloads source, builds the deploy binary. +# Builds the deploy binary and installs to /opt/fw/. +# The binary handles everything: symlinks, extraction, setup. # # curl -fsSL ".../setup.sh" | bash -# sudo /opt/wallarm/deploy -# -# All deployments live under /opt/wallarm/. +# sudo /opt/fw/deploy # ============================================================================== set -euo pipefail BOLD='\033[1m' GREEN='\033[0;32m' -CYAN='\033[0;36m' YELLOW='\033[1;33m' RED='\033[0;31m' NC='\033[0m' REPO_URL="https://git.sechpoint.app/customer-engineering/wallarm.git" WALLARM_DIR="/opt/fw" -SOURCE_DIR="${WALLARM_DIR}/source" BUILD_DIR="/tmp/wallarm-build-$$" cleanup() { rm -rf "$BUILD_DIR"; } trap cleanup EXIT -echo -e "${BOLD}Wallarm Deployment Bootstrap${NC}" -echo +echo -e "${BOLD}Wallarm Bootstrap${NC}" # ── Prerequisites ───────────────────────────────────────────────────── -install_go() { - echo -e "${YELLOW}Installing Go...${NC}" - if command -v apt-get >/dev/null 2>&1; then - apt-get update -qq && apt-get install -y -qq golang-go - elif command -v yum >/dev/null 2>&1; then - yum install -y golang - elif command -v dnf >/dev/null 2>&1; then - dnf install -y golang - elif command -v apk >/dev/null 2>&1; then - apk add --no-cache go - else - echo -e "${RED}Cannot install Go. Install Go 1.21+ manually.${NC}" - exit 1 - fi -} - if ! command -v git >/dev/null 2>&1; then apt-get update -qq 2>/dev/null && apt-get install -y -qq git 2>/dev/null || true fi if ! command -v go >/dev/null 2>&1; then - install_go + echo -e "${YELLOW}Installing Go...${NC}" + apt-get update -qq 2>/dev/null && apt-get install -y -qq golang-go 2>/dev/null || { + echo -e "${RED}Install Go 1.21+ manually.${NC}"; exit 1 + } fi +echo -e "${GREEN}git $(git --version | cut -d' ' -f3) go $(go version | cut -d' ' -f3)${NC}" -echo -e "${GREEN}git: $(git --version | cut -d' ' -f3) go: $(go version | cut -d' ' -f3)${NC}" - -# ── Create /opt/wallarm/ ────────────────────────────────────────────── -echo -echo -e "${YELLOW}Creating /opt/wallarm/ directory structure...${NC}" -mkdir -p "${WALLARM_DIR}" -cd "${WALLARM_DIR}" -echo -e "${GREEN} Done.${NC}" - -# ── Clone and build ─────────────────────────────────────────────────── -echo -echo -e "${YELLOW}Cloning repository...${NC}" +# ── Build ───────────────────────────────────────────────────────────── +echo -e "${YELLOW}Cloning...${NC}" git clone --depth 1 "$REPO_URL" "$BUILD_DIR" 2>/dev/null -echo -e "${YELLOW}Building deploy binary (~30s)...${NC}" +echo -e "${YELLOW}Building (~30s)...${NC}" cd "$BUILD_DIR" go build -ldflags="-s -w -X main.version=$(git describe --tags --always 2>/dev/null || echo 'dev')" -o deploy ./cmd/deploy/ - -# UPX compress if available -if command -v upx >/dev/null 2>&1; then - upx --best --lzma deploy -o deploy.tmp 2>/dev/null && mv deploy.tmp deploy || true -fi +command -v upx >/dev/null 2>&1 && upx --best --lzma deploy -o deploy.tmp 2>/dev/null && mv deploy.tmp deploy || true # ── Install ─────────────────────────────────────────────────────────── -cp deploy "${WALLARM_DIR}/deploy" -chmod +x "${WALLARM_DIR}/deploy" - -# Copy source for local rebuilds -rm -rf "${SOURCE_DIR}"/* -cp -r cmd internal go.mod go.sum "${SOURCE_DIR}/" 2>/dev/null || true +mkdir -p "$WALLARM_DIR" +cp deploy "$WALLARM_DIR/deploy" +chmod +x "$WALLARM_DIR/deploy" +V=$("$WALLARM_DIR/deploy" --version 2>/dev/null || echo "unknown") echo -V=$("${WALLARM_DIR}/deploy" --version 2>/dev/null || echo "unknown") echo -e "${GREEN}${BOLD}Ready!${NC} (${V})" -echo -echo -e " ${CYAN}sudo /opt/wallarm/deploy${NC} — Start the TUI" -echo -e " ${CYAN}/opt/wallarm/deploy --help${NC} — Show commands" -echo -e " ${CYAN}/opt/wallarm/deploy --tunnel${NC} — Start remote tunnel" -echo -echo -e " Source: ${SOURCE_DIR}/ (rebuild: cd ${SOURCE_DIR} && go build ./cmd/deploy/)" -echo -ls -lh "${WALLARM_DIR}/deploy" +echo -e " ${GREEN}sudo /opt/fw/deploy${NC}" +ls -lh "$WALLARM_DIR/deploy"