Packer est un outil bien connu dans le monde l’industrialisation des constructions d’images pour des environnements multi-plateformes (AWS, Azure, vSphere, Nutanix, containers …).
Il permet d’automatiser la création d’images machines homogènes en intégrant configuration de zéro et personnalisation avec scripts.
Le but ici n’est pas de présenter l’outil Packer en temps que tel, mais de montrer son intégration et son utilisation dans un environnement Nutanix AHV.
Pré-Requis
Pour pouvoir utiliser Packer, il est nécessaire de disposer de deux choses :
- Packer installé dans une version récente. Il existe une documentation officielle pour son installation qui dépends de votre environnement source Hashicorp – Installing Packer. Pour ma part travaillant sur macOS j’ai utilisé Homebrew pour installer Packer. J’ai donc exécuté une commande de type :
brew tap hashicorp/tap brew install hashicorp/tap/packer
2. Il est ensuite nécessaire d’installer le plugin Packer qui va être capable de parler et d’envoyer des instructions à notre infrastructure de virtualisation Nutanix AHV (au travers de Prism Central).
Pour celà Nutanix a créé son propre plugin Packer disponible ici Nutanix Cloud Native – Packer Plugin. Ce plugin est d’ailleurs développé et maintenu par l’excellent Christophe Jauffret (Solutions Architect chez Nutanix).
Installer ce plugin est relativement aisé avec une simple commande Packer :
packer plugins install github.com/nutanix-cloud-native/nutanix
Ce qui nous donne la sortie suivante :
![]()
On peut bien sûr vérifier son installation via la commande suivante :
packer plugins installed
Par exemple sur mon environnement j’ai la sortie suivante :
![]()
Détail de l’environnement
Ici mon environnement va s’organiser autour des éléments suivants :
- Une Image ISO de Windows Server 2025
- Une Image des virtIO drivers derniers en date à l’heure de cet article
- AHV 11 (mais fonctionne sur version antérieures)
- AOS 7.5 (mais fonctionne sur version antérieures)
- PC 7.5 (mais fonctionne sur version antérieures)
- Un réseau avec IPAM géré depuis Nutanix AOS
- Un storage container
- La génération en sortie d’un Template sous Prism Central de ma VM préparée selon mes instructions
Préparation des fichiers du projet
Je vais ici vous détailler la préparation des fichiers utilisé pour mon déploiement. A savoir que Nutanix fournit déja un exemple d’utilisation du plugin Packer sur son répo pour Linux et Windows. L’exemple de déploiement Windows concerne un Windows 11 mais vous y retrouverez de grandes similitudes avec l’exemple présenté ci-dessous.
Je vais tenter de pointer au fur à mesure les différentes adaptations à réaliser pour la partie Windows Server (et notamment 2025).
Le projet s’organise donc de la manière suivante :
- Un fichier build.nutanix.pkr.hcl qui va contenir les différentes informations concernant le build (sources, plugins, provisionners)

- Un fichier de variable variables.auto.pkrvars.hcl qui contient les clés valeurs pour les différentes variables (identifiants, endpoint, nom des images, containers uuid …)

- Un fichier déclaratif des types de variables variables.pkr.hcl qui va décrir la variable, son nom, son type et une optionnelle description.

- Un fichier source.nutanix.pkr.hcl qui comporte tout les paramètres de configurations (scripts à pousser, ressources de la machines, commandes de boot)

En plus de cela, dans le même répertoire, un dossier ‘scripts’ va contenir 3 éléments essentiels à la customisation de la machine :
- Un fichier autounattend.xml qui est le fichier de sysprep qui contient toutes les informations de customisation de l’OS (langue, partition des disques…)
- Un script PowerShell pour l’activation de WinRM nécessaire à Packer EnableWinRMforPacker.ps1
- Un fichier cmd SetupComplete.cmd pour la finalisation de l’OS
Vous pouvez retrouver l’intégralité de ces fichiers sur mon Github pour les réutiliser pour vos prochains déploiements.
Points d’attentions
Plusieurs points nécessitent une attention particulière et quelques différences avec l’exemple de Nutanix
- Fichier autounattend.xml :
- Pour Windows Server il est important de renseigner le mode visé, dans mon cas Windows Server en version DataCenter avec GUI :

- Renseigner correctement le PATH des virtios à installer qui diffère d’une version de Windows à une autre :

- Avoir une cohérence de mot de passe entre celui du compte administrateur du sysprep et celui fournit pour WinRM dans le fichier variables.auto.pkrvars.hcl

- Adapter la table de partition à vos souhaits et à l’OS visé et sélectionner la bonne partition pour l’installation :

2. Variables du cluster :
- Pour intégrer la partie stockage, il faut récupérer l’UUID du storage container en question. Cette opération se fait aisément en API ou directement en nCLi depuis n’importe qu’elle CVM du cluster :
ncli ctr ls
Qui nous donne le résultat suivant :

- Pour la partie nutanix_endpoint dans le fichier, c’est bien l’IP de Prism Central qui est à spécifier et non pas l’URL ou une concaténation IP+Port. Le plugin se charge lui même de formater les URLs lors de ses calls.

Ping : Nutanix - Construire des images pour AHV avec Packer : Utilisation - Nuta Fr