Si vous ĂȘtes comme moi et que vous bricolez un homelab VMware, vous savez que les ressources ne tombent pas du ciel. Entre le CPU et la RAM limitĂ©s (c’est moins vrai depuis le NVMe Tiering) on compte chaque VM dĂ©ployĂ©e !
Alors quand il sâagit de monter une infra pour du test, la tentation est grande de dĂ©ployer un vCenter pour manager son unique ESX. C’est vrai qu’il amĂšne pas mal de fonctionnalitĂ©s bien utiles mais il a un gros inconvĂ©nient il est souvent trop gourmand pour nos petites machines.
Surtout si tu veux déployer un cluster vSAN qui aura lui aussi son propre vCenter
Câest lĂ que mon petit script Bash entre en scĂšne : il me permet de dĂ©ployer plusieurs ESXi nested en restant sur un simple ESXi standalone, sans vCenter, sans cluster, et surtout sans dĂ©vorer toutes les ressources.
Comment fonctionne le script ?
Il faut installer Ă la mano un premier Nested ESX que l’on nommera template_esx.
Une fois installĂ©, on se connecte Ă la console et on fait un reset de la configuration System : c’est un moyen rapide de « dĂ©personnaliser » un ESX et d’ĂȘtre sur qu’au moment de le cloner, on aura bien un comportement similaire Ă un template gĂ©nĂ©rique.
On peut mĂȘme enlever de l’inventaire notre VM pour Ă©viter de la dĂ©marrer sans le vouloir.
ATTENTION : Ne supprimez pas votre VM, il faut juste la désenregistrer

Personnaliser le script
Activer SSH sur votre ESX et enregistrer le script sur votre datastore.
Pensez à rendre exécutable le script avec un chmod +x
Le script est assez lisible, il va tout simplement copier la VM template_esx (conf et disques) dans un nouveau dossier qui portera le nom que vous lui aurez donné.
#!/bin/sh# ===============================# Script pour cloner une VM ESXi standalone# ===============================# --- CONFIGURATION ---ORIGINAL_VM_NAME="template_esx" # Nom du dossier de la VM sourceDATASTORE="DatastoreNVME" # Nom du datastoreVM_PATH="/vmfs/volumes/$DATASTORE"# --- DEMANDER LE NOM DU CLONE Ă L'UTILISATEUR ---read -p "Entrez le nom du clone : " CLONED_VM_NAMEif [ -z "$CLONED_VM_NAME" ]; then echo "Erreur : vous devez entrer un nom pour le clone." exit 1fiecho "[+] Nom du clone choisi : $CLONED_VM_NAME"# --- CRĂER LE DOSSIER DE LA VM CLONĂE ---mkdir -p "$VM_PATH/$CLONED_VM_NAME"echo "Dossier $CLONED_VM_NAME créé."# --- COPIER LES FICHIERS DE CONFIGURATION ---cp "$VM_PATH/$ORIGINAL_VM_NAME/"*.vmx "$VM_PATH/$CLONED_VM_NAME/"cp "$VM_PATH/$ORIGINAL_VM_NAME/"*.nvram "$VM_PATH/$CLONED_VM_NAME/"cp "$VM_PATH/$ORIGINAL_VM_NAME/"*.vmxf "$VM_PATH/$CLONED_VM_NAME/" 2>/dev/nullcp "$VM_PATH/$ORIGINAL_VM_NAME/"*.vmsd "$VM_PATH/$CLONED_VM_NAME/" 2>/dev/nullecho "Fichiers de configuration copiĂ©s."# --- CLONER LES DISQUES VMDK ---for disk in "$VM_PATH/$ORIGINAL_VM_NAME/"*.vmdk; do base_disk=$(basename "$disk") new_disk="$VM_PATH/$CLONED_VM_NAME/${base_disk%.vmdk}_cloned.vmdk" echo "Clonage de $base_disk â $(basename $new_disk)" vmkfstools -i "$disk" "$new_disk" -d thindone# --- METTRE Ă JOUR LE VMX POUR UTILISER LES NOUVEAUX DISQUES ---for new_disk in "$VM_PATH/$CLONED_VM_NAME/"*_cloned.vmdk; do # Remplace le disque original par le disque clonĂ© original_disk_name=$(basename "$new_disk" | sed 's/_cloned.vmdk/.vmdk/') sed -i "s/$original_disk_name/$(basename $new_disk)/g" "$VM_PATH/$CLONED_VM_NAME/$ORIGINAL_VM_NAME.vmx"done# Renommer le fichier VMX pour le clonemv "$VM_PATH/$CLONED_VM_NAME/$ORIGINAL_VM_NAME.vmx" "$VM_PATH/$CLONED_VM_NAME/$CLONED_VM_NAME.vmx"# Enregistre la VM dans lâinventairevim-cmd solo/registervm "$VM_PATH/$CLONED_VM_NAME/$CLONED_VM_NAME.vmx"#Renommer le displayName dans le fichier vmx #sed -i "s/^displayName = \"template_esx\"/displayName = \"$CLONED_VM_NAME\"/" $VM_PATH/$CLONED_VM_NAME/$CLONED_VM_NAME.vmxecho "Au premier dĂ©marrage, choisissez 'I copied it' pour gĂ©nĂ©rer un nouvel UUID et MAC."
En quelques secondes vous pouvez dĂ©ployer autant d’ESX que vous le souhaitez.

Laisser un commentaire