Files
ja4-platform/tests/vm/provision-analysis.sh
Jacquin Antoine f88b739992 feat(e2e): add distributed E2E test framework with parametric traffic generation
Add run-e2e-test.sh with CLI parameters (--hits, --http-ratio, --dns, --tls,
--src-ips, --keep-analysis, --up) for configurable traffic generation. Traffic
runs from VM endpoints with multiple source IPs (alias IPs on eth0) to produce
distinct sessions for the ML pipeline. Fix curl TLS flags (--tlsv1.2 instead
of --tls-v1-2), skip redundant local verification in distributed mode, and
fix dashboard is_available() cache that never retried after ClickHouse recovery.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-04-15 00:09:32 +02:00

60 lines
3.1 KiB
Bash
Executable File

#!/usr/bin/env bash
# =============================================================================
# provision-analysis.sh — Provisionnement de la VM analysis (ClickHouse + bot-detector + dashboard)
#
# Installe uniquement Docker et les prérequis pour la stack d'analyse.
# Pas de toolchain eBPF, Go, ni serveurs web (uniquement sur les endpoints).
# =============================================================================
set -euo pipefail
log() { echo "[provision] $(date +%H:%M:%S) $*"; }
# ── 1. Mise à jour système + dépôts ──────────────────────────────────────────
log "Mise à jour des dépôts..."
dnf install -y epel-release dnf-plugins-core
dnf config-manager --enable crb
dnf update -y --quiet
# ── 2. Docker + docker-compose ───────────────────────────────────────────────
log "Installation de Docker..."
dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo
dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Sur kernel 6.12+ (el10+), nf_tables incompatibilité avec iptables-nft
if ! systemctl start docker 2>/dev/null; then
log "Docker: fallback iptables=false pour kernel $(uname -r)"
mkdir -p /etc/docker
echo '{"iptables": false}' > /etc/docker/daemon.json
fi
systemctl enable --now docker
usermod -aG docker vagrant
chmod 666 /var/run/docker.sock || true
# ── 3. Firewall — ouvrir les ports d'analyse ──────────────────────────────────
log "Configuration firewall..."
firewall-cmd --add-port=9000/tcp --permanent 2>/dev/null || true # ClickHouse native
firewall-cmd --add-port=8123/tcp --permanent 2>/dev/null || true # ClickHouse HTTP
firewall-cmd --add-port=8080/tcp --permanent 2>/dev/null || true # bot-detector health
firewall-cmd --add-port=8000/tcp --permanent 2>/dev/null || true # dashboard
firewall-cmd --reload 2>/dev/null || true
# ── 4. Swap (sécurité pour le build Docker des images ML) ────────────────────
log "Configuration swap 4G..."
if [ ! -f /swapfile ]; then
dd if=/dev/zero of=/swapfile bs=1M count=4096 status=progress
chmod 600 /swapfile
mkswap /swapfile
swapon /swapfile
echo '/swapfile none swap sw 0 0' >> /etc/fstab
fi
# ── 5. Outils utilitaires ─────────────────────────────────────────────────────
log "Installation outils..."
dnf install -y curl python3 python3-pip
# ── 6. Répertoire de travail ──────────────────────────────────────────────────
# Le projet est rsync par Vagrant (config vm.synced_folder dans Vagrantfile)
log "Provisionnement analysis terminé !"
log "Lancer 'make test-e2e' depuis le host pour démarrer le test distribué."