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:
admin 2026-08-03 14:29:14 +00:00
parent fd641905e0
commit e25ea0560b
2 changed files with 15 additions and 14 deletions

View file

@ -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)

View file

@ -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