Complete Active Directory teaching environment based on dockurr/windows: - Windows Server domain controller, Windows 11 client, Debian 12 client - docker-compose orchestration, env-driven configuration - Bilingual documentation (FR + EN) for students - Dual approach (GUI + PowerShell) in every procedure - Instructor course plan and reference scripts - RDP launcher scripts for Linux, macOS and Windows Made by AcadéNice - https://acadenice.fr/
78 lines
2.5 KiB
Bash
Executable file
78 lines
2.5 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Vérifie les prérequis locaux avant de lancer le lab.
|
|
# Fait par AcadéNice - https://acadenice.fr/
|
|
|
|
set -u
|
|
|
|
ok() { echo "[ OK ] $*"; }
|
|
ko() { echo "[FAIL] $*"; fail=1; }
|
|
warn() { echo "[WARN] $*"; }
|
|
|
|
fail=0
|
|
OS="$(uname -s)"
|
|
|
|
echo "Vérification des prérequis (OS détecté : $OS)"
|
|
echo
|
|
|
|
command -v docker >/dev/null 2>&1 \
|
|
&& ok "docker : $(docker --version 2>/dev/null | awk '{print $3}' | tr -d ',')" \
|
|
|| ko "docker absent"
|
|
|
|
docker compose version >/dev/null 2>&1 \
|
|
&& ok "docker compose v2 : $(docker compose version --short 2>/dev/null)" \
|
|
|| ko "docker compose v2 absent (plugin docker-compose-plugin requis)"
|
|
|
|
docker info >/dev/null 2>&1 \
|
|
&& ok "daemon docker joignable" \
|
|
|| ko "daemon docker inaccessible (user dans le groupe docker ?)"
|
|
|
|
case "$OS" in
|
|
Linux)
|
|
if [ -e /dev/kvm ] && [ -r /dev/kvm ] && [ -w /dev/kvm ]; then
|
|
ok "/dev/kvm accessible"
|
|
elif [ -e /dev/kvm ]; then
|
|
ko "/dev/kvm existe mais pas lisible (groupe kvm ?)"
|
|
else
|
|
ko "/dev/kvm absent (VT-x / AMD-V désactivé dans le BIOS ?)"
|
|
fi
|
|
lsmod 2>/dev/null | grep -q "^kvm " && ok "module kvm chargé" || warn "module kvm non chargé"
|
|
;;
|
|
Darwin)
|
|
if [ "$(uname -m)" = "arm64" ]; then
|
|
ko "Mac Apple Silicon : dockurr/windows non supporté (voir docs/etudiant/fr/00-prerequis.md)"
|
|
else
|
|
warn "Mac Intel : Docker Desktop avec virtualisation imbriquée requis"
|
|
fi
|
|
;;
|
|
MINGW*|CYGWIN*|MSYS*)
|
|
warn "Sous Windows, utilisez plutôt check-prereqs.ps1"
|
|
;;
|
|
esac
|
|
|
|
if command -v free >/dev/null 2>&1; then
|
|
MEM_GB=$(free -g | awk '/^Mem:/ {print $2}')
|
|
if [ "$MEM_GB" -ge 16 ]; then ok "RAM ${MEM_GB} Go"
|
|
elif [ "$MEM_GB" -ge 12 ]; then warn "RAM ${MEM_GB} Go (minimum — fermez les autres applis)"
|
|
else ko "RAM ${MEM_GB} Go insuffisante"
|
|
fi
|
|
fi
|
|
|
|
FREE_GB=$(df -BG "$PWD" 2>/dev/null | awk 'NR==2 {gsub("G",""); print $4}')
|
|
if [ -n "${FREE_GB:-}" ]; then
|
|
if [ "$FREE_GB" -ge 150 ]; then ok "Disque libre ${FREE_GB} Go"
|
|
elif [ "$FREE_GB" -ge 80 ]; then warn "Disque libre ${FREE_GB} Go (juste le minimum)"
|
|
else ko "Disque libre ${FREE_GB} Go insuffisant"
|
|
fi
|
|
fi
|
|
|
|
command -v xfreerdp3 >/dev/null 2>&1 || command -v xfreerdp >/dev/null 2>&1 \
|
|
&& ok "xfreerdp disponible" \
|
|
|| warn "xfreerdp absent (recommandé pour RDP fluide)"
|
|
|
|
echo
|
|
if [ $fail -eq 0 ]; then
|
|
echo "Prérequis critiques : OK."
|
|
exit 0
|
|
fi
|
|
echo "Prérequis manquants. Voir docs/etudiant/fr/00-prerequis.md"
|
|
exit 1
|