Aller au contenu

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