Vous êtes ici

Script pour créer des VMs de test issu de la prod en un clique ( VMware ESXi Free )

Pour faire suite à mon article précedent sur la duplication de VM issu d'un environnement de production vers un environnement de test par exemple. Voici un script qui va permettre de faire cette manipulation de Datastore à Datastore et surtout sur un environnement ESXi License Free

Attention, ici je pars des disques issu de la réplication de mes machines, donc ils ne sont actuellement pas utilisés ( réplication sur pause ).

En prérequis :

le Script Powershell :

# Ajout du snap-in de VMware
add-pssnapin VMware.VimAutomation.Core

echo "Création d'une VM de test d'Appli vers le datastore HP_SCSI"
$response = read-host "Voulez vous continuer (yes/no)"

if ($response -eq "yes") {

# Parametres
$server = "192.168.x.x"
$login = "root"
$password = "motdepasse"
$date = Get-Date -Format ddMMyy

# Affichage du résumé des opérations
echo "########## Résumé des opération #############################################"
echo "Operation : Copie du disque de Backup d'Appli vers le datastore HP SCSI "
echo Server: $server
echo Login: $login
echo Machine: Appli
echo "#############################################################################"

# Connection à l'ESXi
$vh = Connect-VIServer -Server $server -Port 443 -User $login -Password $password

#Création du répertoire ou sera stocker la VM de test
Start-Process C:\ScriptVM\plink.exe "-ssh -P 22 -l $login -pw $password $server mkdir /vmfs/volumes/Datastore_HP_SCSI/Appli.$date"
Start-Sleep -s 10

#Copie de la VM de Backup dans le datastore de test
Start-Process C:\ScriptVM\plink.exe "-ssh -P 22 -l $login -pw $password $server cp -R /vmfs/volumes/Datastore_QNAP/Appli\(1\)/ /vmfs/volumes/Datastore_HP_SCSI/Appli.$date"

#Création du fichier de configuration vmx
Get-Content C:\ScriptVM\applit.vmx | foreach { $_ -replace "appli.test23","Appli.$date" } |  out-file -Encoding utf8 c:\ScriptVM\Appli.$date.vmx
Start-Sleep -s 10

#Transfert du fichier dans le répertoire de la vm de test 
#1 Mise en formce du fichier script WinSCP
Get-Content C:\ScriptVM\winscp.txt | foreach { $_ -replace "appli.test23","Appli.$date" } |  out-file -Encoding utf8 c:\ScriptVM\winscp2.txt
Start-Sleep -s 10
Get-Content C:\ScriptVM\winscp2.txt | foreach { $_ -replace "applit","Appli.$date" } |  out-file -Encoding utf8 c:\ScriptVM\winscp3.txt
Start-Sleep -s 10
#2 Transfert du fichier avec WinSCP
Start-Process "C:\Program Files\WinSCP\WinSCP.com" /script=c:\ScriptVM\winscp3.txt
Start-Sleep -s 20

#Ajout de la VM a l'inventaire
Start-Process c:\ScriptVM\plink.exe "-ssh -P 22 -l $login -pw $password $server vim-cmd solo/registervm /vmfs/volumes/Datastore_HP_SCSI/Appli.$date/Appli\(1\)/Appli.$date.vmx"
Start-Sleep -s 10

# Deconnection du serveur ESXi
Disconnect-VIServer -Server $vh -Confirm:$false

#Nettoyage des fichiers de travail
Remove-Item c:\ScriptVM\Appli.$date.vmx
Remove-Item c:\ScriptVM\winscp2.txt
Remove-Item c:\ScriptVM\winscp3.txt

# Fin du script
echo "########### Operation en cours##################################"
echo " Opération en cours...."
echo " Ne fermez aucune fenêtre pendant la durée du traitement "
echo " Le processus de copie sera terminé lorsque les fenêtres "
echo " se fermeront "
echo " La VM de test se situe dans : Datastore_HP_SCSI/Appli.$date"
echo "################################################################"

} elseif ($response -eq "no") {
"Opération annulée"
} 

Contenu du ficier winscp.txt :

open test
put c:\ScriptVM\applit.vmx /vmfs/volumes/Datastore_HP_SCSI/appli.test23/Appli(1)/
exit
 
open test : Cela signifie d'ouvrir la session enregistrée sous le nom "test" à partir de WinSCP
 
Procédure pour enregistrer une session sous WinSCP :
 
 
Le fichier Appli.vmx est le fichier de configuration de votre VM tel que vous le voulez pour votre machine repliquée. Vous pouvez prendre le fichier de configuration de votre VM tel quel, ou lui apporter quelques modifications, comme par exemple, la changer de réseau LAN.

www.le-gas.fr : Le guide de l'admin Systeme