feat: offline mode — drop binaries in /opt/fw/offline/
Offline deployment for air-gapped corporate environments: - /opt/fw/offline/docker-29.2.1.tgz → Docker static binary - /opt/fw/offline/wallarm-node.tar → Wallarm Docker image - Setup auto-detects and uses offline files - Falls back to apt/docker.io if no offline files
This commit is contained in:
parent
fd641905e0
commit
e25ea0560b
2 changed files with 15 additions and 14 deletions
|
|
@ -8,8 +8,9 @@ BASE = "/opt/fw"
|
||||||
APP = f"{BASE}/app"
|
APP = f"{BASE}/app"
|
||||||
CONF = f"{APP}/fw.conf"
|
CONF = f"{APP}/fw.conf"
|
||||||
STATE = f"{APP}/state.json"
|
STATE = f"{APP}/state.json"
|
||||||
WALLARM_IMAGE = "wallarm/node:6.13.0"
|
WALLARM_IMAGE = os.environ.get("WALLARM_IMAGE", "wallarm/node:6.13.0")
|
||||||
DOCKER_BIN_URL = "https://git.sechpoint.app/customer-engineering/wallarm/raw/branch/main/docker/binaries/docker-29.2.1.tgz"
|
DOCKER_BIN_URL = os.environ.get("DOCKER_BIN_URL", "")
|
||||||
|
OFFLINE_DIR = f"{BASE}/offline"
|
||||||
|
|
||||||
def run(cmd, timeout=120):
|
def run(cmd, timeout=120):
|
||||||
return subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=timeout)
|
return subprocess.run(cmd, shell=True, capture_output=True, text=True, timeout=timeout)
|
||||||
|
|
|
||||||
24
setup.sh
24
setup.sh
|
|
@ -68,30 +68,30 @@ else
|
||||||
fi
|
fi
|
||||||
chmod +x "${APP_DIR}/main.py" "${WALLARM_DIR}/deploy.sh"
|
chmod +x "${APP_DIR}/main.py" "${WALLARM_DIR}/deploy.sh"
|
||||||
|
|
||||||
# ── Install Docker (for container-based deployment) ──────────────────
|
# ── Install Docker ───────────────────────────────────────────────────
|
||||||
|
OFFLINE_DIR="${WALLARM_DIR}/offline"
|
||||||
if ! command -v docker >/dev/null 2>&1; then
|
if ! command -v docker >/dev/null 2>&1; then
|
||||||
echo -e "${YELLOW}Installing Docker...${NC}"
|
echo -e "${YELLOW}Installing Docker...${NC}"
|
||||||
# Check for offline Docker binary first
|
if [ -f "${OFFLINE_DIR}/docker-29.2.1.tgz" ]; then
|
||||||
if [ -f "${WALLARM_DIR}/offline/docker-29.2.1.tgz" ]; then
|
echo -e "${GREEN} Using offline binary${NC}"
|
||||||
echo -e "${YELLOW} Using offline Docker binary...${NC}"
|
tar -xzf "${OFFLINE_DIR}/docker-29.2.1.tgz" -C /usr/local/bin/
|
||||||
tar -xzf "${WALLARM_DIR}/offline/docker-29.2.1.tgz" -C /usr/local/bin/
|
dockerd &>/dev/null & sleep 2
|
||||||
dockerd &
|
elif [ -n "${DOCKER_BIN_URL:-}" ] && [ -f "${OFFLINE_DIR}/docker.tgz" ]; then
|
||||||
sleep 2
|
tar -xzf "${OFFLINE_DIR}/docker.tgz" -C /usr/local/bin/
|
||||||
|
dockerd &>/dev/null & sleep 2
|
||||||
elif command -v apt-get >/dev/null 2>&1; then
|
elif command -v apt-get >/dev/null 2>&1; then
|
||||||
apt-get install -y -qq docker.io 2>/dev/null
|
apt-get install -y -qq docker.io 2>/dev/null
|
||||||
elif command -v yum >/dev/null 2>&1; then
|
elif command -v yum >/dev/null 2>&1; then
|
||||||
yum install -y -q docker 2>/dev/null
|
yum install -y -q docker 2>/dev/null
|
||||||
elif command -v dnf >/dev/null 2>&1; then
|
|
||||||
dnf install -y -q docker 2>/dev/null
|
|
||||||
fi
|
fi
|
||||||
systemctl enable docker 2>/dev/null || true
|
systemctl enable docker 2>/dev/null || true
|
||||||
systemctl start docker 2>/dev/null || true
|
systemctl start docker 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# ── Pre-cache Wallarm Docker image if offline file exists ─────────────
|
# ── Pre-cache Wallarm image ───────────────────────────────────────────
|
||||||
if [ -f "${WALLARM_DIR}/offline/wallarm-node-6.13.0.tar" ]; then
|
if [ -f "${OFFLINE_DIR}/wallarm-node.tar" ]; then
|
||||||
echo -e "${YELLOW}Loading offline Wallarm image...${NC}"
|
echo -e "${YELLOW}Loading offline Wallarm image...${NC}"
|
||||||
docker load -i "${WALLARM_DIR}/offline/wallarm-node-6.13.0.tar" 2>/dev/null || true
|
docker load -i "${OFFLINE_DIR}/wallarm-node.tar" 2>/dev/null || true
|
||||||
fi
|
fi
|
||||||
|
|
||||||
echo
|
echo
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue