Aller au contenu

Architecture

PSWinDeploy est découpé en trois couches indépendantes afin que chacune puisse tourner sur l'hôte le plus adapté.

Vue d'ensemble

PSWinDeploy/
├── PSWinDeploy.psd1                Configuration globale
├── Modules/
│   ├── Config/                     Chargeur de config central
│   ├── WinPE-Builder/              Construction WinPE (amd64/arm64)   — Étape 1
│   ├── WIM-Manager/                Gestion des images WIM              — Étape 2
│   ├── TaskSequence/                Moteur de séquences JSON           — Étape 3
│   ├── DiskSelector/                 Assistant disque console (WinPE)  — Étape 3
│   ├── ProfileManager/             Profils, autologon, sécurité        — Étape 4
│   └── Notify/                     Notifications SMTP + Teams
├── API/
│   └── Deploy-API.ps1              Serveur Pode REST (Windows)
├── Web/                            Front React + Vite (Docker)        — Étape 5
│   └── Dockerfile
├── Profiles/                       Profils de déploiement (*.json)
├── Catalogue/
│   └── catalogue.json              Applications et scripts disponibles
├── Sequences/
│   └── *.json                      Séquences de déploiement
├── Scripts/
│   ├── Start-Deploy.ps1            Point d'entrée WinPE
│   └── startnet.cmd
└── docker-compose.yml

Les trois couches

1. Interface Web (Docker / Linux, port 3000)

Une application React + Vite en single-page app. Elle ne parle qu'à l'API REST en HTTP/JSON — elle ne touche jamais directement aux partages Windows, aux fichiers WIM ou à PowerShell. C'est ce qui lui permet de tourner dans un conteneur Linux pendant que le reste de la chaîne vit sur Windows.

Pages : sélection de profil, catalogue, déploiement en cours (logs en direct), historique/logs, éditeur de séquences, paramètres.

2. API REST (Windows, port 8080)

Deploy-API.ps1, construite sur le framework web PowerShell Pode. Elle expose le moteur de déploiement (profils, catalogue, images WIM, séquences) sous forme d'endpoints JSON et résout une séquence runtime à partir d'un profil + des applications sélectionnées.

3. Moteur de déploiement (Windows / WinPE)

Les modules PowerShell qui font le travail réel : construction de l'image WinPE, application du WIM, exécution de la séquence de tâches JSON (partitionnement disque, jonction domaine, mises à jour, installation logicielle, scripts personnalisés), gestion des reboots, envoi des notifications.

Flux de déploiement

  1. L'opérateur choisit un profil dans l'interface web, sélectionne des apps optionnelles du catalogue, lance la préparation.
  2. POST /api/deploy/prepare résout la séquence runtime à partir du profil + apps sélectionnées.
  3. La machine cible boot sur le WinPE (ISO/PXE) → Start-Deploy.ps1.
  4. Étape WinPE : FormatDisk + ApplyWIM + configuration de l'autologon.
  5. Reboot → premier démarrage Windows (compte temporaire deploy-temp).
  6. Les étapes de la séquence s'exécutent : JoinDomainUpdatesSoftwareScripts personnalisés.
  7. Les reboots intermédiaires reprennent automatiquement via RunOnce.
  8. Fin : Set-LocalAdminPassword + Invoke-DeployCleanup, notification envoyée.

Architectures WinPE supportées

Depuis Windows ADK 2004 (build 19041), le support x86 a été retiré. Seules les architectures amd64 (x64) et arm64 sont disponibles.