Déployer une VM Windows Server 2022 avec Vagrant et VirtualBox
Par Marco F
Déployer une VM Windows Server 2022 avec Vagrant et VirtualBox
Ce billet marque le point de départ d’une série d’expérimentations autour de l’Infrastructure as Code dans mon lab local.
Objectif : déployer automatiquement une machine virtuelle Windows Server 2022 avec Vagrant et VirtualBox, sans aucune intervention graphique.
Toute l’infrastructure est décrite dans un seul fichier :
le Vagrantfile.
1. Pourquoi Vagrant pour ce lab ?
Avant de basculer vers Terraform et Proxmox, Vagrant offre un terrain d’expérimentation local idéal.
- Provisioning rapide en environnement local
- Reproductibilité totale
- Isolation du lab sans impacter l’infrastructure principale
- Compatibilité immédiate avec Ansible via WinRM
L’objectif ici n’est pas de remplacer un hyperviseur de production, mais de créer une base reproductible pour tester l’automatisation Windows.
2. Principe Infrastructure as Code
L’approche classique consiste à :
- Télécharger une ISO
- Créer une VM manuellement
- Installer Windows graphiquement
- Configurer le réseau à la main
Cette méthode est non reproductible et dépendante d’actions humaines.
Avec Vagrant :
- L’état souhaité est déclaré dans un fichier
- Le déploiement devient déterministe
- La VM peut être détruite et recréée à l’identique
3. Prérequis techniques
Vérifier les versions installées :
vboxmanage --version
vagrant --versionVérifier la présence de la box Windows Server 2022 :
vagrant box listBox utilisée : jborean93/WindowsServer2022 (virtualbox)
4. Initialisation du projet
mkdir -p ~/LabSpace/VMs/win_server_2022
cd ~/LabSpace/VMs/win_server_2022
vagrant init jborean93/WindowsServer2022
Le fichier Vagrantfile généré devient notre manifeste IaC local.
5. Configuration détaillée du Vagrantfile
Vagrant.configure("2") do |config|
config.vm.box = "jborean93/WindowsServer2022"
config.vm.provider "virtualbox" do |vb|
vb.memory = "4096"
vb.cpus = 2
vb.name = "Win2022-Lab-Ansible"
end
config.vm.network "private_network", ip: "192.168.56.10"
config.vm.communicator = "winrm"
end
WinRM est l’équivalent Windows de SSH. Il permet l’administration distante et sera indispensable pour Ansible.
L’IP privée permet de garantir une connectivité stable et prévisible pour l’automatisation.
6. Déploiement
vagrant up --provider=virtualbox
Une fois terminé :
Machine booted and ready!
WinRM transport detected
7. Validation IaC : test WinRM
vagrant winrm -c "hostname"
Si la commande retourne le hostname, cela confirme que :
- La VM est accessible
- WinRM est fonctionnel
- L’infrastructure est prête pour Ansible
Conclusion : une base reproductible
Cette première étape pose une fondation solide.
La VM Windows Server 2022 est désormais :
- Déclarative
- Reproductible
- Automatisable
Prochaine étape : intégrer Ansible, exécuter des playbooks via WinRM, puis comparer cette approche avec Terraform.