26/12/2024

Infrastructure as CodeNon classé

VMware Workstation : créer une VM Windows Server avec Packer et Vagrant

I. Présentation

Dans ce tutoriel, nous allons apprendre à créer une box Vagrant sous Windows Server 2022 à partir de l'outil Packer afin d'avoir un modèle de machine prêt à l'emploi. Cette démonstration est réalisée sous Windows 11, avec la solution VMware Workstation Pro 17 pour la virtualisation.

Aujourd'hui, je me présente à vous comme un utilisateur débutant des outils Packer et Vagrant ! J'ai commencé à les manipuler il y a quelques semaines seulement, donc les articles qui seront mis en ligne à ce sujet sont en quelque sorte le reflet de ce que j'ai compris et testé. Si vous avez des conseils à me donner en tant qu'utilisateur plus aguerri, je suis preneur ! 😉

II. Infrastructure as Code : Vagrant et Packer

L'Infrastructure as Code (IAC) est une approche très à la mode pour gérer son infrastructure par l'intermédiaire de fichiers de configuration déclaratifs et de scripts qui vont nous permettre d'automatiser le provisionnement, la configuration et le déploiement de nouveaux systèmes et services. Par exemple, la création d'une nouvelle machine virtuelle avec une configuration bien spécifique, de façon automatique, grâce aux directives présentes dans le fichier déclaratif.

Pour faire de l'Infrastructure as Code, on va pouvoir s'appuyer sur de nombreux outils dont ceux de l'éditeur HashiCorp parmi lesquels on retrouve Packer, Vagrant ou encore Terraform.

A. Qu'est-ce que Vagrant ?

Libre et open source, Vagrant est proposé par l'éditeur HashiCorp et il a pour objectif de faciliter la création d'environnements de développement (à ma connaissance Vagrant n'est pas adapté pour de la production, il y a d'autres outils pour cela). Pour créer un nouvel environnement de développement, Vagrant va déployer ce que l'on appelle des box, c'est-à-dire des images prêtes à l'emploi (Linux, Windows, etc.).

Grâce à des fichiers déclaratifs, il va être possible de déployer une ou plusieurs machines virtuelles très rapidement, de manière à disposer d'un nouvel environnement propre et prêt à l'emploi. Il est compatible avec de nombreux environnements tels que VirtualBox, Hyper-V, VMware ainsi que Docker, grâce à ce que l'on appelle des providers.

Note : il existe des box Vagrant prêtes à l'emploi et disponibles sur cette page.

B. Qu'est-ce que Packer ?

Packer est libre également et il est aussi proposé par HashiCorp ! Il a pour objectif de faciliter la création d'images de systèmes d'exploitation, notamment pour du Windows ou du Linux, tout en permettant la création de machines virtuelles ou de containers.

Comme Vagrant, Packer est compatible avec de nombreux environnements et il peut préparer ces images système sur plusieurs environnements en même temps. En effet, on peut utiliser Packer pour créer une image sur Hyper-V, VMware ESXi, VMware Workstation, ou encore VirtualBox, mais on peut aussi travailler sur des fournisseurs Cloud comme Microsoft Azure ou AWS.

En production, Packer peut être utilisée pour déployer une nouvelle machine virtuelle avec une configuration spécifique, des outils de base et les dernières mises à jour.

C. Le cas pratique du jour

Dans ce cas pratique, Packer va nous servir à créer une image Windows Server 2022 pour VMware Workstation, avec la dernière version de PowerShell et les VMware Tools. Quelque chose de très simple. Une fois que cette image sera créée, Packer va en créer une box Vagrant.

Puis, Packer passera le relais à Vagrant.

En effet, on utilisera Vagrant pour créer une nouvelle machine virtuelle basée sur notre box, cette dernière étant utilisée comme source pour déployer la nouvelle VM (sans altérer la box qui est statique).

Même si Packer et Vagrant sont fréquemment utilisés sur Linux, ils sont compatibles avec Windows. Ici, j'utilise une machine Windows 11 tout au long de la procédure.

Note : ma machine Windows 11 est équipée de VMware Workstation Pro 17.

III. Installer Packer sous Windows 11

Comme l'explique la documentation officielle de Packer, l'outil peut être installé sur Windows à l'aide de Chocolatey (gestionnaire de paquets gratuit et open source).

Dans une console PowerShell exécutée en tant qu'administrateur, on va pouvoir commencer par installer Chocolatey via la commande officielle :

Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))

Puis, nous allons installer Packer via Chocolatey avec cette commande :

choco install packer

Installer Packer Windows

Une fois l'installation effectuée, vérifiez que Packer soit bien installé en essayant d'obtenir des informations sur la version installée :

packer version

IV. Installer Vagrant sous Windows 11

Pour installer Vagrant sur Windows 11, il suffit de télécharger un package MSI sur le site officiel de HashiCorp ! Accédez au lien ci-dessous, cliquez sur l'onglet "Windows" et téléchargez le package MSI via le bouton "Download".

Effectuez l'installation en suivant l'installation : ce n'est qu'une question de quelques clics et d'un redémarrage de machine.

Installer Vagrant Windows

En complément de Vagrant en lui-même, vous devez installer "Vagrant VMware Utility" pour la prise en charge de VMware Workstation. Là encore, c'est un package à télécharger depuis le site de HashiCorp et à installer en quelques clics :

Vagrant VMware Utility Windows

Puis, terminez par installer le plugin VMware de Vagrant avec cette commande :

# Installer le plugin VMware
vagrant plugin install vagrant-vmware-desktop

# Lister les plugins Vagrant
vagrant plugin list

# Mettre à jour le plugin VMware
vagrant plugin update vagrant-vmware-desktop

Voilà, Packer et Vagrant sont prêts à l'emploi pour la suite des opérations !

V. Générer un fichier autounattend.xml de Windows Server 2022

Pour générer un fichier de réponse pour Windows Server 2022 en partant de zéro, il est possible d'utiliser l'outil "Windows System Image Manager" ou en français "Assistant gestion d'installation". Il va permettre de charger une image WIM et d'ajouter des instructions pour automatiser l'installation du système : partitionnement, choix de la langue, clé de licence, mot de passe administrateur, etc... Tout ce qui est demandé lorsque l'on effectue l'installation à la main en fait.

Ce fichier est très important, car il va permettre à Packer d'effectuer l'installation du système à notre place, et donc de l'automatiser. Toutefois, l'utilisation d'un fichier de réponses n'est pas spécifique à l'utilisation de Packer : c'est une technique utile dans bien d'autres situations.

Exemple - Assistant installation de Windows Server 2022

1 - Installez le kit Windows ADK (avec les mêmes options que pour MDT)

Windows Server 2022 - Installer le kit ADK pour MDT - Etape 2

2 - Ouvrez Windows System Image Manager (WSIM) qui s'appelle "Assistant gestion d'installation" sur un système en français.

3 - Ajoutez l'image "install.wim" de Windows Server 2022 dans l'application, ce qui implique de charger une image "install.wim" à partir d'un support accessible en écriture. Pour cela, montez une image ISO sur votre machine et copiez le fichier "install.wim" de l'image ISO vers votre disque local. Chargez ce fichier dans WSIM et sélectionner l'image de votre choix, ici ce sera "Windows Server 2022 SERVERSTANDARD".

Windows System Image Manager - Importer image install.wim

4 - Créez un nouveau fichier de réponse avec un clic droit dans la partie centrale puis "Nouveau fichier de réponses".

WSIM - Créer un nouveau fichier de réponse

5 - Construisez le fichier de réponses de Windows Server 2022. Suite à l'ajout de l'image et à la création d'un fichier de réponse vierge, il y a une liste d'éléments disponibles en bas à gauche, tandis que la partie centrale correspond au contenu du fichier de réponses. Pour le moment, ce fichier est vide.

WSIM - Créer fichier de réponse Windows Server

Il doit être complété pour intégrer les informations nécessaires pour l'installation automatique (afin de répondre à l'assistant d'installation à notre place) :

  • Partitionnement du disque,
  • Langage du système
  • Disposition du clavier
  • Nom du compte Administrateur
  • Mot de passe du compte Administrateur
  • Clé de licence
  • Etc.

Pour ajouter un composant au fichier de réponses, il faut effectuer un clic droit dessus pour l'ajouter à une section du fichier (windowsPE, offline Servicing, generalize, etc.).

Par exemple, avec "amd64_Microsoft-Windows-Setup_neutral", on va pouvoir configurer l'élément "DiskConfiguration" pour définir le schéma de partitionnement du disque.

WSIM - Partitionnement du disque

Par ailleurs, et là on est sur un besoin spécifique à la construction d'une image avec un outil comme Packer, on doit activer WinRM sur le système. Pour cela, on configure l'élément "SynchronousCommand" disponible dans "amd64_Microsoft-Windows-Shell-Setup_neutral" de façon à exécuter le script "winrmConfig.bat" pour activer et préconfigurer WinRM sur la machine. En fait, Packer a besoin de se connecter à la machine via WinRM pour effectuer la configuration.

WSIM - Script activation WinRM pour Packer

Pensez à enregistrer vos modifications au fur et à mesure, à l'aide de l'icône en forme de disquette. Nommez ce fichier autounattend.xml. Le fichier XML obtenu est le reflet de la configuration effectuée avec l'outil WSIM. Plutôt que de partir de zéro, vous pouvez utiliser mon exemple de fichier XML (et l'ouvrir dans WSIM pour le personnaliser) :

Exemple autounattend.xml pour Packer

Le fichier de réponses étant prêt, nous pouvons passer à la suite. Gardez à l'esprit qu'il sera peut-être nécessaire de l'éditer par la suite pour faire des ajustements ou ajouter des étapes supplémentaires.

VI. Créer le modèle de VM avec Packer sous VMware Workstation

Pour la syntaxe des fichiers déclaratifs Packer, nous avons le choix entre deux langages : JSON et HCL2, le second correspondant à la syntaxe propre aux outils de chez HashiCorp. Pour cet exemple, ce sont des fichiers au format HCL qui sont utilisés.

Commencez par créer un dossier "WS2022" qui regroupera tous les fichiers de notre projet, et à l'intérieur, créez le fichier "ws2022.pkr.hcl" qui sert à déclarer la configuration de notre machine virtuelle. Pour l'éditer,  je vous recommande l'utilisation de Visual Studio Code avec l'extension "HashiCorp HCL".

Visual Studio Code - Extension HCL

A. Le bloc packer

Le fichier HCL se découpe en plusieurs blocs. Le premier bloc se nomme "packer" et va permettre de déclarer la version de Packer requise, ainsi que le(s) plugin(s) nécessaires pour le bon fonctionnement de notre projet. Ici, le seul plugin qui fait office de dépendance se nomme "vmware".

Ce qui donne :

packer {
  required_version = ">= 1.7.0"
  required_plugins {
    vmware = {
      version = ">= 1.0.0"
      source = "github.com/hashicorp/vmware"
    }
  }
}

B. Le bloc source

Ensuite, on doit construire un second bloc de type "source" où l'on va préciser que l'on veut utiliser le builder "vmware-iso" pour VMware et nommer ce builder "WS2022". Ainsi, Packer sait que les instructions de ce bloc sont adaptées à VMware Workstation. Dans ce bloc, on va déclarer tous les paramètres qui vont permettre à Packer de créer la machine virtuelle et d'effectuer l'installation du système : nom de la VM, type de système invité, chemin vers l'image ISO, nombre de CPU, quantité de RAM, type de connexion au réseau virtuel, etc....

L'ensemble des paramètres pris en charge par le builder "vmware-iso" sont définis dans la documentation :

Voici la définition utilisée pour cet exemple :

source "vmware-iso" "WS2022" {
  // Nom de la VM et système invité (Windows Server 2022)
  vm_name = "WS2022" 
  guest_os_type = "windows2019srvnext-64"
  version = "20"

  // ISO source pour l'installation et checksum (Get-FileHash)
  iso_url = "W:/ISO/fr-fr_windows_server_2022_updated_dec_2022_x64_dvd_34eae3b9.iso"
  iso_checksum = "md5:290B43B5A6FE9B52B561D34EB92E8003"

  // Config de la VM : CPU, RAM, disque, réseau
  cpus = "2"
  cores = "1"
  memory = "4096"
  disk_adapter_type = "nvme"
  disk_size = "40960"
  network_adapter_type = "e1000e"
  network = "nat"

  // Connexion WINRM
  communicator = "winrm"
  winrm_port = "5985"
  insecure_connection = "true"
  winrm_username = "Administrateur"
  winrm_password = "P@ssword!"

  // Lecteur disquette (pour charger autounattend.xml et les scripts)
  floppy_files = ["${path.root}/setup/"]
  floppy_label = "floppy"

  // Commande pour arrêter le système (ici, on effectue un SYSPREP avant l'arrêt) 
  // arrêt seul : shutdown_command = "shutdown /s /t 30 /f"
  shutdown_command = "C:\\Windows\\system32\\Sysprep\\sysprep.exe /generalize /oobe /shutdown /unattend:a:\\sysprep-autounattend.xml"
  shutdown_timeout = "60m"
}

Note : dans l'exemple ci-dessus, une valeur statique est affectée à chaque paramètre. Pour que notre modèle soit plus flexible, il est recommandé d'utiliser un système de variables. Ainsi, le fichier déclaratif ci-dessus contiendrait principalement des noms de variables, et un second fichier permettrait d'associer des valeurs à ces variables. Comme il s'agit d'une première introduction, j'ai préféré simplifier cette partie.

Je vous invite à lire les commentaires du fichier ci-dessus, mais quelques explications s'imposent...

La machine virtuelle créée s'appellera WS2022 (le nom du système est déterminé par le fichier autounattend.xml), elle aura 2 vCPU avec 1 cœur, 4 Go de RAM et 40 Go d'espace disque. La carte réseau de la VM sera connectée en mode "NAT".

On peut voir aussi qu'une image ISO disponible en local est utilisée (paramètre iso_url) et que l'on vérifie l'intégrité de l'image système avant de l'utiliser (paramètre iso_checksum). La valeur spécifiée pour le paramètre iso_checksum est obtenue avec la commande PowerShell Get-FileHash afin de calculer la somme MD5 de l'image ISO source.

Pour se connecter à la machine virtuelle, Packer va utiliser le protocole WinRM (paramètre communicator) en mode HTTP et s'authentifier avec l'utilisateur "Administrateur" et le mot de passe "P@ssword!" (paramètres winrm_username et winrm_password). Ces identifiants doivent correspondre au compte créé à l'installation avec le fichier autounattend.xml.

D'ailleurs, Packer doit pouvoir accéder au fichier autounattend.xml et à notre script "winrmConfig.bat" qui sert à activer et configurer WinRM. Pour cela, on s'appuie sur le lecteur disquette de la machine virtuelle : la disquette virtuelle va contenir le contenu du répertoire "setup" que l'on va créer à la racine de notre projet "VM-WS2022". Comme le montre l'exemple ci-dessous, ce répertoire contient le fichier XML et le script ".bat" ainsi que d'autres fichiers qui seront dévoilés plus tard ! 😉

Packer - Fichiers lecteur disquette

Enfin, Packer doit avoir connaissance d'une commande lui permettant d'éteindre la machine virtuelle lorsqu'il aura terminé d'exécuter les différentes actions (paramètre shutdown_command).

On pourrait tout simplement arrêter la machine, mais comme il s'agit d'une image Windows destinée à être dupliquée (modèle de box Vagrant), il est essentiel de réaliser un SYSPREP sinon les machines générées auront le même identifiant unique... Pour que le SYSPREP soit effectué et que la nouvelle machine virtuelle soit initialisée de façon automatique, un second fichier de réponses nommé "sysprep-autounattend.xml" est utilisé (il contient beaucoup moins de paramètres !). Ceci explique la ligne suivante :

shutdown_command = "C:\\Windows\\system32\\Sysprep\\sysprep.exe /generalize /oobe /shutdown /unattend:a:\\sysprep-autounattend.xml"

Ce fichier est disponible aussi sur mon GitHub et peut être lu et personnalisé avec l'outil WSIM ("Assistant gestion d'installation").

Pour le fichier HCL complet, c'est par ici :

C. Le bloc build

Il est important de préciser qu'à partir du moment où WinRM sera accessible, Packer va se connecter à la machine virtuelle pour exécuter les instructions du bloc "build". En se basant sur la structure du fichier, on voit que l'on sépare bien la partie "construction de la VM sur la plateforme" et la partie "configuration de la VM (système).

Dans le bloc "build", on va utiliser ce que l'on appelle un "provisioner" pour exécuter différentes actions. Par exemple, il y a un provisioner nommé "powershell" qui sert à exécuter des scripts ou commandes PowerShell. Dans l'exemple ci-dessous, deux scripts PowerShell stockés dans "setup" (donc accessibles via le lecteur disquette) sont exécutés :

  • install-powershell.ps1 pour installer la dernière version de PowerShell (PowerShell 7.X à l'heure actuelle) via Internet
  • install-vmtools.ps1 pour installer les VMware Tools de Windows Server dans la machine virtuelle

Ces scripts sont disponibles sur mon GitHub. En complément, on va effectuer un redémarrage de la machine virtuelle via le provisioner "windows-restart".

Enfin, une instruction de type "post-processor" est déclarée. Elle est optionnelle et sera traitée après les différents provisioners. Dans le cas présent, on utilise le post-processor "vagrant" pour générer une box Vagrant à partir de l'image virtuelle construite par Packer (en l'appelant packer_WS2022_vmware.box).

Ce qui donne :

build {
  sources = ["sources.vmware-iso.WS2022"]

  // Installer PowerShell (dernière version disponible sur GitHub)
  provisioner "powershell" {
    script = "${path.root}/setup/install-powershell.ps1"
  } 

  // Installer VMware Tools
  provisioner "powershell" {
    script = "${path.root}/setup/install-vmtools.ps1"
  } 

  // Initier un redémarrage de la machine
  provisioner "windows-restart" {
    restart_timeout = "10m"
  }

  // Export sous la forme d'une box Vagrant
  post-processor "vagrant" {
    keep_input_artifact = false
    output = "packer_{{.BuildName}}_{{.Provider}}.box"
    provider_override = "vmware"
  }
}

Tout le contenu évoqué dans cette partie de l'article est regroupé dans le même fichier : "ws2022.pkr.hcl". Il contient la déclaration de toutes les actions que Packer doit effectuer. Sauvegardez le fichier.

VII. Générer la VM avec Packer (VMware Workstation)

Le fichier déclaratif de Packer étant prêt, nous allons pouvoir tester la construction de notre image. Ouvrez une console PowerShell et positionnez-vous dans le répertoire où se situe le fichier HCL. En ce qui me concerne :

cd W:\Packer\VM-WS2022

Ensuite, on appelle le fichier "HCL" avec l'option "init" pour que Packer lise notre fichier afin de voir de quels plugins il aura besoin pour construire l'image. Il va télécharger les plugins nécessaires, en l'occurrence ici le plugin "vmware". La première fois que l'on utilise un nouveau template, c'est important de commencer par un init. La documentation officielle le précise clairement : "Il s'agit de la première commande à exécuter lorsque l'on travaille avec un nouveau modèle ou un modèle existant."

packer.exe init ws2022.pkr.hcl

Une fois que c'est fait, vous pouvez lancer la construction de l'image en remplaçant "init" par "build". Ce qui donne :

packer.exe build ws2022.pkr.hcl

À partir de ce moment-là, Packer va commencer par charger l'image ISO, calculer son checksum MD5 et comparer la valeur obtenue avec celle déclarée dans le fichier HCL. Puis, il va enchainer les autres étapes, notamment créer la machine virtuelle dans VMware Workstation, charger les fichiers du répertoire "setup" dans le lecteur disquette, etc... L'avancement est visible dans la console.

Grâce au fichier "autounattend.xml", Packer va pouvoir réaliser l'installation du système d'exploitation sans aucune action de notre part. En complément, pour suivre l'avancement, il est possible de regarder ce qu'il se passe dans VMware Workstation : en temps réel, on voit les actions s'enchaîner.

À partir du moment où le script "winrmConfig.bat" sera exécuté, Packer pourra se connecter en WinRM à la machine virtuelle. Ceci va lui permettre d'exécuter les actions du bloc "build". On voit bien que Packer est en attente grâce à la présence de la ligne "Waiting for WinRM to become available..." dans la console.

VMware Workstation - Packer Build

Quelques minutes plus tard, ou plutôt 6 minutes et 32 secondes plus tard pour être précis, Packer a terminé de construire notre machine virtuelle et il a généré une box Vagrant correspondante.

Packer - VMware - Création box Vagrant - Finished

VIII. Créer une box Vagrant avec Packer

Comme je l'évoquais précédemment, c'est bien l'instruction "post-processor "vagrant"" qui permet d'indiquer à Packer qu'il doit générer une box Vagrant en guise de sortie, après avoir construit l'image dans VMware.

Cela est possible grâce à la présence de ce bloc dans le fichier HCL :

  // Export sous la forme d'une box Vagrant
  post-processor "vagrant" {
    keep_input_artifact = false
    output = "packer_{{.BuildName}}_{{.Provider}}.box"
    provider_override = "vmware"
  }

Sans ce bout de code, Packer crée une machine virtuelle et s'arrête à la fin de l'exécution. Dans ce cas, la machine virtuelle créée pourrait être utilisée, mais elle serait unique. Grâce à la création d'un modèle de box Vagrant, on peut créer une multitude de machines virtuelles basées sur notre modèle généré avec Packer.

Sur ma machine, la box Vagrant est bien disponible :

Fichier Box Vagrant généré par Packer

IX. Créer une machine virtuelle avec Vagrant

À partir de notre box Vagrant "packer_WS2022_vmware.box", on va pouvoir générer une nouvelle machine virtuelle VMware. Pour commencer, toujours dans le répertoire "W:\Packer\VM-WS2022", on va créer le fichier ci-dessous pour déclarer la VM à générer :

vagrantFile

Remarque : ce fichier peut aussi être généré avec la commande "vagrant init" qui permet d'obtenir un nouveau fichier vagrantFile type. Mais là, je vais vous fournir le code à intégrer.

Bien sûr, ce fichier ne va pas rester vide ! On va ajouter du contenu dans ce fichier. Voici le bout de code que je vous propose d'utiliser :

Vagrant.configure("2") do |config|
  config.vm.box = "packer_WS2022_vmware.box"
  # Vagrant n'a plus besoin du plugin WinRM (c'est pris en charge nativement)
  config.vm.communicator = "winrm"
  config.winrm.username = "Administrateur"
  config.winrm.password = "P@ssword!"
  config.vm.provider "vmware_workstation" do |vmware|
    vmware.gui = true
  end
end

Quelques explications s'imposent :

  • Vagrant.configure("2") do |config| : déclaration d'une configuration Vagrant en version 2
  • config.vm.box : nom de la box à utiliser ; ici on utilise une box locale, mais il existe aussi des box disponibles sur Internet
  • config.vm.communicator : protocole à utiliser pour se connecter à la VM, ici WinRM
  • config.winrm.username : nom d'utilisateur pour se connecter en WinRM (on réutilise le compte créé via Packer)
  • config.winrm.password : le mot de passe de ce compte
  • config.vm.provider "vmware_workstation" : déclaration du nom du fournisseur

Pour récupérer directement le fichier vagrantFile :

Actuellement, Vagrant n'a aucune box dans son inventaire. Celle spécifiée dans notre fichier vagrantFile sera ajoutée au moment de la création de la VM. D'ailleurs, on va créer cette machine virtuelle sans plus attendre avec cette commande :

PS W:\Packer\VM-WS2022> vagrant up --provider vmware_workstation

Suite à l'exécution de cette commande, une nouvelle machine virtuelle va apparaître dans VMware Worsktation ! Cette VM sera basée sur notre box créée avec Packer ! Il suffit de patienter quelques secondes...

Vagrant VMware Workstation Windows Server 2022

Voilà, la machine virtuelle Windows Server 2022 est déployée ! Elle est prête à l'emploi, avec PowerShell 7 installé et les VMware Tools installées également : conformément à ce qui a été fait en amont avec Packer. La VM créée est stockée à cet endroit :

W:\Packer\VM-WS2022\.vagrant\machines\default\vmware_workstation

Vagrant VM WS 2022 OK

La VM peut être arrêtée avec VMware Workstation, mais aussi avec Vagrant :

vagrant halt
==> default: Attempting graceful shutdown of VM...

Pour supprimer la VM depuis Vagrant, on utilisera la commande ci-dessous (qui requiert une validation) :

vagrant destroy

Même si l'on supprime la VM, la box Vagrant est toujours enregistrée dans l'inventaire. On peut le vérifier avec la commande ci-dessous :

vagrant box list

vagrant box list

Si l'on génère une nouvelle version VM, la box enregistrée sera réutilisée.

De ce fait, si on crée une nouvelle version de la box (je dis bien de la box) avec Packer (pour ajouter un autre logiciel, par exemple), il faudra supprimer la box enregistrée dans Vagrant et la réinscrire (ce qui sera fait au moment du vagrant up même si l'on peut faire aussi un vagrant box add). Sinon, on générera une nouvelle version de notre box, mais Vagrant ne l'utilisera pas.

Pour supprimer une box Vagrant, il suffit de spécifier son nom :

vagrant box remove packer_WS2022_vmware.box

Ensuite, si l'on relance la création de la VM, la nouvelle version de la box Packer sera importée et utilisée. En attendant, profitez d'utiliser la VM nouvellement créée pour faire vos tests !

X. Conclusion

Cet article touche à sa fin ! On pourrait aller beaucoup plus loin, mais voici déjà un bel article d'introduction à Packer et Vagrant sous Windows (enfin je crois ?). Cette box de base pourrait être complétée par de la configuration Ansible pour déployer un rôle spécifique sur la VM, comme la création automatique d'un domaine Active Directory. Mais, ce sera abordé dans de futurs articles... D'ailleurs, n'hésitez pas à me dire aussi si cela vous intéresse que je publie plus de contenus sur le thème de l'Infrastructure as Code.

Enfin, merci à Jérôme Bezet-Torres qui m'a communiqué des informations indispensables sur le fonctionnement de Packer !

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

2 commentaires sur “VMware Workstation : créer une VM Windows Server avec Packer et Vagrant

  • J’ai pas réussi avec la dernière version de VmWare, alors je me suis rabbattu sur virtualbox, ça marche

    Répondre
  • packer plugins install github.com/hashicorp/vagrant
    t’en auras besoin sur windows 11 avec vmware

    Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.