simplify: setup.sh just builds and drops binary in /opt/fw/
No directory structure creation, no confusing messages. Deploy binary handles everything else.
This commit is contained in:
parent
b44da10ae7
commit
83f73c0e9c
1 changed files with 20 additions and 59 deletions
79
setup.sh
79
setup.sh
|
|
@ -1,98 +1,59 @@
|
||||||
#!/bin/bash
|
#!/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
|
# curl -fsSL ".../setup.sh" | bash
|
||||||
# sudo /opt/wallarm/deploy
|
# sudo /opt/fw/deploy
|
||||||
#
|
|
||||||
# All deployments live under /opt/wallarm/.
|
|
||||||
# ==============================================================================
|
# ==============================================================================
|
||||||
|
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
|
|
||||||
BOLD='\033[1m'
|
BOLD='\033[1m'
|
||||||
GREEN='\033[0;32m'
|
GREEN='\033[0;32m'
|
||||||
CYAN='\033[0;36m'
|
|
||||||
YELLOW='\033[1;33m'
|
YELLOW='\033[1;33m'
|
||||||
RED='\033[0;31m'
|
RED='\033[0;31m'
|
||||||
NC='\033[0m'
|
NC='\033[0m'
|
||||||
|
|
||||||
REPO_URL="https://git.sechpoint.app/customer-engineering/wallarm.git"
|
REPO_URL="https://git.sechpoint.app/customer-engineering/wallarm.git"
|
||||||
WALLARM_DIR="/opt/fw"
|
WALLARM_DIR="/opt/fw"
|
||||||
SOURCE_DIR="${WALLARM_DIR}/source"
|
|
||||||
BUILD_DIR="/tmp/wallarm-build-$$"
|
BUILD_DIR="/tmp/wallarm-build-$$"
|
||||||
|
|
||||||
cleanup() { rm -rf "$BUILD_DIR"; }
|
cleanup() { rm -rf "$BUILD_DIR"; }
|
||||||
trap cleanup EXIT
|
trap cleanup EXIT
|
||||||
|
|
||||||
echo -e "${BOLD}Wallarm Deployment Bootstrap${NC}"
|
echo -e "${BOLD}Wallarm Bootstrap${NC}"
|
||||||
echo
|
|
||||||
|
|
||||||
# ── Prerequisites ─────────────────────────────────────────────────────
|
# ── 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
|
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
|
apt-get update -qq 2>/dev/null && apt-get install -y -qq git 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
if ! command -v go >/dev/null 2>&1; then
|
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
|
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}"
|
# ── Build ─────────────────────────────────────────────────────────────
|
||||||
|
echo -e "${YELLOW}Cloning...${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}"
|
|
||||||
git clone --depth 1 "$REPO_URL" "$BUILD_DIR" 2>/dev/null
|
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"
|
cd "$BUILD_DIR"
|
||||||
go build -ldflags="-s -w -X main.version=$(git describe --tags --always 2>/dev/null || echo 'dev')" -o deploy ./cmd/deploy/
|
go build -ldflags="-s -w -X main.version=$(git describe --tags --always 2>/dev/null || echo 'dev')" -o deploy ./cmd/deploy/
|
||||||
|
command -v upx >/dev/null 2>&1 && upx --best --lzma deploy -o deploy.tmp 2>/dev/null && mv deploy.tmp deploy || true
|
||||||
# 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
|
|
||||||
|
|
||||||
# ── Install ───────────────────────────────────────────────────────────
|
# ── Install ───────────────────────────────────────────────────────────
|
||||||
cp deploy "${WALLARM_DIR}/deploy"
|
mkdir -p "$WALLARM_DIR"
|
||||||
chmod +x "${WALLARM_DIR}/deploy"
|
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
|
|
||||||
|
|
||||||
|
V=$("$WALLARM_DIR/deploy" --version 2>/dev/null || echo "unknown")
|
||||||
echo
|
echo
|
||||||
V=$("${WALLARM_DIR}/deploy" --version 2>/dev/null || echo "unknown")
|
|
||||||
echo -e "${GREEN}${BOLD}Ready!${NC} (${V})"
|
echo -e "${GREEN}${BOLD}Ready!${NC} (${V})"
|
||||||
echo
|
echo -e " ${GREEN}sudo /opt/fw/deploy${NC}"
|
||||||
echo -e " ${CYAN}sudo /opt/wallarm/deploy${NC} — Start the TUI"
|
ls -lh "$WALLARM_DIR/deploy"
|
||||||
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"
|
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue