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>
60 lines
3.1 KiB
Bash
Executable File
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é."
|