Architecture et profils¶
Architecture en couches de l'image VDI Windows et système de profils pour activer les composants à la carte.
Architecture en couches¶
graph TB
OS["Windows Server 2022 / Win 10-11"]
WinRM["WinRM HTTPS + Sysprep"]
RDP["Bureau RDP + Personnalisation"]
Apps["Applications (LibreOffice / M365)"]
Containers["Conteneurs (containerd + WSL2)"]
K3s["K3s dans WSL2"]
Security["Securite + Hardening"]
OS --> WinRM
WinRM --> RDP
RDP --> Apps
Apps --> Containers
Containers --> K3s
K3s --> Security Chaque couche correspond à un ou plusieurs rôles Ansible. Les rôles sont indépendants et activables via le système de profils.
Profils utilisateurs¶
| Profil | Rôles actives | Cas d'usage |
|---|---|---|
| office | rdp, apps (LibreOffice), security | Utilisateur bureautique |
| developer | rdp, apps, chocolatey, containers, wsl2, k3s, security | Développeur |
| full | Tous les rôles | Image complète |
Fichiers de profils¶
Créez ansible/profiles/office.yml :
rdp_enabled: true
apps_enabled: true
chocolatey_enabled: true
m365_enabled: false
containers_enabled: false
wsl2_enabled: false
k3s_enabled: false
security_enabled: true
Créez ansible/profiles/developer.yml :
rdp_enabled: true
apps_enabled: true
chocolatey_enabled: true
m365_enabled: false
containers_enabled: true
wsl2_enabled: true
k3s_enabled: true
security_enabled: true
Créez ansible/profiles/full.yml :
rdp_enabled: true
apps_enabled: true
chocolatey_enabled: true
m365_enabled: false
containers_enabled: true
wsl2_enabled: true
k3s_enabled: true
security_enabled: true
M365
Le flag m365_enabled est a false par défaut dans tous les profils. Activez-le uniquement si vous disposez des licences Microsoft 365.
Variables Windows¶
Créez ansible/group_vars/windows.yml :
ansible_connection: winrm
ansible_winrm_transport: ntlm
ansible_winrm_server_cert_validation: ignore
ansible_winrm_port: 5986
ansible_winrm_scheme: https
# Packages communs a tous les profils
common_packages:
- 7zip
- notepadplusplus
- googlechrome
# Utilisateur VDI
vdi_user: "vdi-user"
vdi_password: "Ch@ngeme123!"
Playbook principal¶
Créez ansible/playbook.yml :
---
- name: VDI Windows
hosts: all
gather_facts: true
pre_tasks:
- name: Charger le profil
ansible.builtin.include_vars:
file: "profiles/{{ profile | default('full') }}.yml"
roles:
- role: rdp
when: rdp_enabled | default(false)
- role: apps
when: apps_enabled | default(false)
- role: chocolatey
when: chocolatey_enabled | default(false)
- role: m365
when: m365_enabled | default(false)
- role: containers
when: containers_enabled | default(false)
- role: wsl2
when: wsl2_enabled | default(false)
- role: k3s
when: k3s_enabled | default(false)
- role: security
when: security_enabled | default(false)
Comparaison avec VDI Linux¶
| Aspect | VDI Linux | VDI Windows |
|---|---|---|
| Connexion Ansible | SSH | WinRM over HTTPS |
| Bureau | XFCE + xRDP | RDP natif |
| Gestionnaire de paquets | apt / dnf | Chocolatey / winget |
| Conteneurs | Podman rootless | containerd + nerdctl |
| Conteneurs Linux | Natif | Via WSL2 + Docker Engine |
| Kubernetes | K3s natif | K3s dans WSL2 |
| Generalisation | cloud-init | Sysprep + unattend.xml |