Créer une VM Windows Server
Découvrez comment créer une VM Windows Server sur SNC Cloud Platform à partir d'une ISO d'évaluation Microsoft, de l'import dans Glance à la connexion RDP
Objectif
Guide pratique pour importer une image Windows dans Glance et provisionner une VM Windows Server sur la plateforme OpenStack SNC Cloud Platform, en l'absence d'image Windows prête à l'emploi. Public cible : toute personne à l'aise avec la ligne de commande ; une expérience préalable d'OpenStack est utile mais pas indispensable.
Ce guide couvre le provisionnement complet d'une VM Windows Server sur une plateforme OpenStack qui ne propose pas d'image Windows prête à l'emploi dans Glance : téléchargement de l'ISO d'évaluation Microsoft, import dans Glance, provisionnement réseau/stockage, installation automatisée (ou manuelle) de l'OS et configuration réseau post-installation. Windows n'ayant pas d'équivalent à cloud-init, plusieurs étapes qui sont automatiques sur une VM Linux doivent être faites à la main.
Licences Microsoft : la plateforme ne fournit pas, à ce jour, de licences Microsoft. Ce guide utilise une ISO d'évaluation Microsoft (licence temporaire, à des fins de test) — l'acquisition, la gestion et la conformité de toute licence Microsoft (Windows Server ou autre) restent entièrement à la charge du client.
Prérequis
- Disposer d'un accès à la plateforme via un
clouds.yaml(application credential OpenStack), rôlememberau minimum. - Disposer de la CLI OpenStack (
python-openstackclient), installable viapip. - Disposer d'un poste avec suffisamment d'espace disque libre pour stocker l'ISO Windows localement (~10 Go) — l'import se fait depuis le poste local vers Glance, pas via téléchargement côté serveur (reportez-vous à l'étape 3 pour savoir pourquoi).
- Disposer d'un compte Microsoft (gratuit) pour télécharger une ISO d'évaluation Windows Server.
Note TLS : selon l'ancienneté de l'OpenSSL/LibreSSL de votre poste, la CLI OpenStack peut échouer à négocier TLS 1.3 avec l'API de la plateforme. Si openstack token issue échoue avec une erreur de type SSL routines ou handshake failure, reportez-vous aux pièges connus.
En pratique
Vue d'ensemble : pourquoi une VM Windows demande plus d'étapes manuelles qu'une VM Linux
Une VM Linux provisionnée sur cette plateforme utilise une image cloud-init prête à l'emploi : au premier démarrage, l'agent cloud-init lit les métadonnées OpenStack (clé SSH, réseau, user_data) et configure la machine automatiquement, y compris l'adressage IP.
Une ISO Windows n'a pas cet agent. Deux conséquences directes :
- L'installation elle-même n'est pas automatique par défaut — l'ISO lance l'assistant d'installation interactif (Windows Setup). Ce guide montre comment l'automatiser via un fichier de réponses (
autounattend.xml), mais une installation manuelle via la console graphique reste possible et est décrite en alternative. - La configuration réseau post-installation est manuelle. Le réseau public
Ext-Netde cette plateforme n'a pas de serveur DHCP (enable_dhcp = falsesur son sous-réseau) — les VM Linux contournent cette limite car cloud-init configure l'IP statiquement à partir des métadonnées OpenStack. Windows n'a pas cette capacité : il faut saisir l'adresse IP à la main une fois l'OS installé (reportez-vous à l'étape 9).
Étape 1 — Télécharger l'ISO Windows
Microsoft distribue des ISO d'évaluation Windows Server (licence limitée dans le temps, généralement 180 jours) via l'Evaluation Center — nécessite un compte Microsoft.
- Choisissez l'édition (ex. Windows Server 2025) et la langue.
- Téléchargez l'ISO en local (~7-8 Go selon l'édition).
- Notez le chemin local, ex.
~/Downloads/windows-server-2025-eval.iso.
Une ISO Windows contient en général plusieurs éditions dans un seul fichier install.wim (Standard/Datacenter, avec/sans Expérience de bureau). L'étape 4 les liste pour que vous choisissiez celle à installer.
Étape 2 — Installer et configurer la CLI OpenStack
Étape 3 — Importer l'ISO dans Glance
Plusieurs méthodes existent pour importer une image dans Glance. Sur cette plateforme, seule openstack image create --file (import direct depuis le poste local) est prise en charge — c'est la méthode recommandée :
L'import d'une ISO de ~7-8 Go prend en général 1 à 3 minutes selon la bande passante montante du poste local. --private restreint la visibilité de l'image à votre projet.
Vérifiez le résultat :
Étape 4 — Préparer un média d'installation automatisée
Cette étape est optionnelle : Windows Setup peut aussi être piloté à la main via la console graphique (voir la note en fin de section). L'automatiser via un fichier de réponses (autounattend.xml) évite l'interaction manuelle et est reproductible.
4.1 Identifier les éditions disponibles dans l'ISO
Le fichier sources/install.wim contient les métadonnées de chaque édition (nom, index, description) dans un bloc XML interne. Si wimlib-imagex n'est pas installé, un script court l'extrait :
Chaque bloc <IMAGE INDEX="N"> du résultat contient une balise <DISPLAYNAME> lisible (ex. « Windows Server 2025 Standard Evaluation (Expérience de bureau) ») — notez l'INDEX de l'édition voulue, il sera utilisé dans le fichier de réponses.
4.2 Télécharger les pilotes VirtIO
Les disques et cartes réseau de cette plateforme sont émulés en VirtIO par l'hyperviseur KVM/QEMU sous-jacent — Windows n'intègre pas ces pilotes (contrairement au stockage IDE/SATA classique, pris en charge nativement). Le paquet officiel de pilotes (projet Fedora/Red Hat, signés Microsoft) :
Les dossiers utiles sont organisés par version d'OS puis architecture, ex. NetKVM/2k25/amd64/, viostor/2k25/amd64/, vioscsi/2k25/amd64/ (adaptez 2k25 à la version Windows ciblée si différente).
4.3 Construire le média secondaire (autounattend.xml + pilotes)
Le modèle de fichier de réponses complet est disponible au téléchargement : autounattend.xml. Points clés à adapter avant usage :
/IMAGE/INDEX: l'index d'édition identifié en 4.1.AdministratorPassword/Value: un mot de passe généré (jamais en clair dans un dépôt versionné une fois renseigné — consultez la section « Secrets et données sensibles » du guide Terraform).UILanguage,InputLocale,SystemLocale,UserLocaleetTimeZone: réglez-les sur la langue de votre ISO Windows et sur votre région (le modèle utilisefr-FRetRomance Standard Time).ComputerName: le nom de la machine (le modèle utilisewin-test).DriverPaths: liste plusieurs lettres de lecteur candidates (D:,E:,F:) — voir l'encadré ci-dessous.
Pourquoi plusieurs lettres candidates ? La lettre réellement attribuée au média des pilotes dépend du nombre de lecteurs CD-ROM attachés à l'instance, qui varie selon la configuration, et ne peut pas être prédite avec certitude. Windows Setup ignore silencieusement les chemins qui n'existent pas : la pratique courante consiste donc à lister 2-3 lettres plausibles plutôt qu'à essayer de deviner la bonne.
Organisez le média :
Construisez l'ISO (macOS, sans outil tiers) :
Sur Linux : genisoimage -o unattend.iso -J -R -V UNATTEND media/ (ou l'équivalent avec xorriso).
Alternative sans automatisation : sans autounattend.xml, Windows Setup se pilote entièrement à la main via la console graphique noVNC (reportez-vous à l'étape 8) — plus lent mais suffisant pour un test ponctuel. Les pilotes VirtIO restent nécessaires (à charger manuellement via Charger un pilote pendant l'installation, ou après coup via le Gestionnaire de périphériques — reportez-vous aux pièges connus).
Étape 5 — Importer le média secondaire dans Glance
Même méthode qu'à l'étape 3 :
Étape 6 — Provisionner le réseau et les volumes
6.1 Réseau et groupe de sécurité
N'ouvrez jamais RDP en 0.0.0.0/0 sur une VM Windows — c'est une cible de choix pour les attaques par force brute. Restreignez --remote-ip à une plage connue (VPN, IP fixe).
6.2 Port réseau public — indépendant de l'instance
Sur cette plateforme, une IP publique s'obtient en attachant une deuxième interface réseau directement au réseau externe partagé Ext-Net (pas de floating IP classique). Créer ce port séparément, avant l'instance, permet de le détacher/rattacher à une autre instance plus tard sans perdre l'adresse IP :
Un openstack port create avec --fixed-ip ip-address=<adresse-ip> sur Ext-Net est refusé par la politique de la plateforme (403 Forbidden) — il n'est pas possible de choisir une IP publique spécifique sur cette plateforme, l'IP est attribuée automatiquement depuis le pool. C'est un point important si vous devez un jour recréer l'instance : un port créé séparément, comme ci-dessus, survit à la suppression de l'instance ; un port créé implicitement via --nic net-id= au moment du server create est, lui, supprimé automatiquement en même temps que l'instance (et l'IP repart dans le pool).
6.3 Volume système — marqué bootable avant utilisation
Un volume vierge (source_type=blank) n'est jamais marqué bootable automatiquement par Cinder, même après qu'un OS y a été installé depuis l'intérieur d'une VM. Sans cet attribut, openstack server create refuse de démarrer dessus avec l'erreur Block Device <id> is not bootable — positionnez-le avant la création de l'instance.
Étape 7 — Créer l'instance
Point le plus important de ce guide : l'ordre de boot_index détermine quel périphérique devient le root device de l'instance — et un root device ne peut jamais être détaché via l'API, ni à chaud ni à froid, pour toute la durée de vie de l'instance.
Points clés de cette commande :
boot_index=0sur le volume système (vide), pas sur l'ISO. Au premier démarrage, le firmware (BIOS/UEFI) essaie le disque à l'index 0 : vide, aucun système trouvé, il passe automatiquement au périphérique suivant (l'ISO, index 1) et démarre Windows Setup. Une fois l'installation terminée, le disque à l'index 0 est amorçable et devient la cible naturelle des démarrages suivants. Conséquence directe : c'est le disque système, pas l'ISO, qui devient le root device — l'ISO reste un volume ordinaire, détachable normalement une fois l'installation terminée (reportez-vous à l'étape 11).disk_bus=satapartout, paside. Le bus IDE de QEMU n'expose que 4 emplacements au total ; cette plateforme injecte automatiquement un volume de configuration (config-2, visible dans l'OS comme un lecteur CD-ROM supplémentaire) qui consomme un emplacement à lui seul. Avec 2 CD-ROM + 1 disque + ce volume de configuration, le bus IDE est saturé — l'instance reste alors bloquée en bouclescheduling/spawningsans jamais atteindreACTIVE, sans message d'erreur explicite. SATA offre 6 emplacements, ce qui est largement suffisant, et reste nativement pris en charge par Windows Setup (pas besoin d'y charger un pilote).--nic port-id=pourExt-Net, jamais--nic net-id=— pour la raison expliquée en 6.2 (portabilité du port/IP).
Étape 8 — Suivre l'installation via la console
Ouvrez l'URL retournée dans un navigateur. Si un autounattend.xml valide a été fourni (étape 4), l'installation se déroule sans interaction. Sinon, suivez l'assistant Windows Setup manuellement :
- Choisissez la langue et l'édition (la même édition que celle que vous indiqueriez dans
/IMAGE/INDEX, reportez-vous à l'étape 4.1). - Sélectionnez
Installation personnalisée, puis le disque vide (60 Go) comme cible. - Si le disque n'apparaît pas dans la liste : cliquez sur
Charger un pilote, parcourez jusqu'au média des pilotes (viostorouvioscsiselon le bus configuré ; nécessaire uniquement si vous avez remplacé le bussatade l'étape 7 par un bus VirtIO) et chargez le pilote correspondant à l'architecture (amd64). - Laissez l'installation se dérouler (plusieurs redémarrages automatiques).
Étape 9 — Trouver l'IP et configurer le réseau (manuel)
Où trouver l'IP publique de l'instance
Ces commandes donnent l'IP attribuée côté OpenStack — mais tant que Windows n'est pas configuré pour l'utiliser, la VM n'est pas joignable depuis l'extérieur. Les sections suivantes font le lien.
Pourquoi une configuration manuelle est nécessaire
Rappel de la vue d'ensemble : le sous-réseau Ext-Net n'a pas de DHCP. ipconfig affiche une adresse auto-attribuée (169.254.x.x, APIPA) sur la carte réseau publique tant que rien n'est configuré :
(dans cet exemple, la carte « Ethernet 2 », listée en second, a déjà été configurée manuellement — voir la capture suivante)
Configurer l'IP statique (interface graphique recommandée)
Depuis la console (la console saisit le texte collé comme un clavier QWERTY US, qui peut différer de la disposition configurée dans Windows — reportez-vous aux pièges connus si des caractères spéciaux sont mal interprétés en collant des commandes) :
Panneau de configuration > Centre Réseau et partage > Modifier les paramètres de la carte > [carte réseau publique] > Propriétés > Protocole Internet version 4 (TCP/IPv4) > Propriétés
Renseignez :
- Adresse IP : celle retournée par
openstack server show(ci-dessus) - Masque de sous-réseau : à lire avec le CIDR de
Ext-Netviaopenstack subnet show <id-sous-réseau-ext-net> -f value -c cidr, puis à convertir en masque (un sous-réseau/24correspond par exemple à255.255.255.0) - Passerelle par défaut : récupérable via
openstack subnet show <id-sous-réseau-ext-net> -f value -c gateway_ip(ID du sous-réseau viaopenstack subnet list --network Ext-Net) - DNS : récupérable via
openstack subnet show <id-sous-réseau-ext-net> -f value -c dns_nameservers
Vérifier les cartes réseau (pilotes VirtIO)
Si une carte réseau n'apparaît pas du tout dans Get-NetAdapter (PowerShell) ou affiche une erreur Code 28 dans le Gestionnaire de périphériques (pilote manquant) :
Installez manuellement le pilote NetKVM (fourni dans le média préparé à l'étape 4) :
Gestionnaire de périphériques > clic droit sur le périphérique > Mettre à jour le pilote > Rechercher sur mon ordinateur > parcourir jusqu'à [lettre]:\drivers\NetKVM\amd64
Une fois fait, la carte apparaît correctement identifiée :
Étape 10 — Se connecter en RDP
RDP est désactivé par défaut sur Windows. S'il n'a pas été activé automatiquement via autounattend.xml (FirstLogonCommands, voir le modèle fourni), activez-le à la main :
Système > Bureau à distance > Activer
Puis, dans le Pare-feu Windows Defender, assurez-vous que la règle « Bureau à distance » est autorisée sur tous les profils réseau, pas seulement Privé/Domaine — une carte réseau nouvellement configurée est souvent classée « Public », profil sur lequel la règle RDP n'est pas active par défaut. La commande suivante l'active sur tous les profils :
Connectez-vous ensuite avec un client RDP standard (Microsoft Remote Desktop, mstsc, etc.) sur l'IP configurée à l'étape 9, port 3389.
Le nom du compte administrateur intégré peut être localisé selon la langue d'installation (ex. Administrateur sur une installation fr-FR, pas Administrator) — vérifiez-le via whoami ou net user une fois connecté.
Étape 11 — Nettoyage post-installation
Comme boot_index=0 a été placé sur le volume système à l'étape 7, ni l'ISO d'installation ni le média d'installation automatisée ne sont des root devices — tous deux se détachent normalement, sans recréer l'instance :
Ce point a un impact direct sur la facturation : ces volumes restent facturés tant qu'ils existent, qu'ils soient attachés ou non.
Pièges connus (dépannage)
Aller plus loin
Modèle de fichier de réponses complet : autounattend.xml.
Pilotes VirtIO officiels (projet Fedora) : virtio-win.iso sur fedorapeople.org.
ISO d'évaluation Windows Server : Microsoft Evaluation Center.
Documentation Microsoft sur les fichiers de réponses (unattend.xml) : learn.microsoft.com — Vue d'ensemble de l'automatisation du programme d'installation de Windows.
Guide Terraform — VM Linux, Object Storage compatible S31, réseau.
Gestion des images Glance — importer, vérifier et partager des images, et en créer des volumes.
Gestion des IP publiques — conserver la même IP publique d'une instance à l'autre.
Pour une formation ou une assistance technique sur la mise en œuvre de nos solutions, contactez votre commercial ou consultez la page Professional Services pour obtenir un devis et faire analyser votre projet par nos experts.
Échangez avec notre communauté d'utilisateurs.
1 : S3 est une marque déposée appartenant à Amazon Technologies, Inc. Les services OVHcloud ne sont pas sponsorisés, approuvés, ou affiliés de quelque manière que ce soit.