đŸ§Œ Propre et efficace : Du Nested ESXi sans vCenter (ni crash)

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 source
DATASTORE="DatastoreNVME" # Nom du datastore
VM_PATH="/vmfs/volumes/$DATASTORE"
# --- DEMANDER LE NOM DU CLONE À L'UTILISATEUR ---
read -p "Entrez le nom du clone : " CLONED_VM_NAME
if [ -z "$CLONED_VM_NAME" ]; then
echo "Erreur : vous devez entrer un nom pour le clone."
exit 1
fi
echo "[+] 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/null
cp "$VM_PATH/$ORIGINAL_VM_NAME/"*.vmsd "$VM_PATH/$CLONED_VM_NAME/" 2>/dev/null
echo "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 thin
done
# --- 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 clone
mv "$VM_PATH/$CLONED_VM_NAME/$ORIGINAL_VM_NAME.vmx" "$VM_PATH/$CLONED_VM_NAME/$CLONED_VM_NAME.vmx"
# Enregistre la VM dans l’inventaire
vim-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.vmx
echo "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

En savoir plus sur jbroberjot.com

Abonnez-vous pour poursuivre la lecture et avoir accùs à l’ensemble des archives.

Poursuivre la lecture