Manuel Roccon

ICT & Cyber Security Specialist

Arresto dell’ambiente VMware vSphere con PowerCLI

Questi script permettono di chiudere tutte le macchine virtuali e gli host per prevenire i guasti a seguito di una interruzione di correte, e dovrebbero essere eseguiti dal software del vostro UPS.

Di seguito 2 tipologie di script, la prima si occupa di spegnere un singolo host con Esxi, mentre la seconda permette di spegnere un infrastruttura con vCenter.

Per prima cosa è necessario installare il package VMware PowerCLI e le sue dipendenze nella macchina dove verranno eseguiti gli script. Quindi eseguire questo comando da amministratore in powershell:

Install-Module -Name VMware.PowerCLI 

nel caso l’esecuzione degli script di PowerShell è disattivata, è necessario eseguire questo comando:

 Set-ExecutionPolicy unrestricted 

Caratteristiche dello script per VmWare Esxi:

  • Invoca lo spegnimento dell’host

Caratteristiche dello script VmWare vCenter:

  • tiene in considerazione l’HA 
  • tiene in considerazione DRS e impedisce di spostare delle macchine mentre vengono arrestate
  • consente di specificare se vCenter è virtuale e si occupa di spegnerlo per ultimo, incluso l’host in cui esso risiede
  • tiene conto del fatto che le VM potrebbero non arrestarsi correttamente per qualche motivo; questo è uno dei motivi principali per cui la maggior parte degli script fallirebbe (vedi VDI streamed VMs) 
  • scrive gli eventi in un file di log 
  • vengono scritte in un file l’elenco delle macchine virtuali attive al momento dello spegnimento, in modo da poter riattivare manualmente tutto oppure sfruttare un altro script che si occuperà della riaccensione della macchine (“poweronvms”)
  • presente controllo per il caricamento di VMware PowerCLI Snap-In
  • supporto per vApp
  • supporto per la password crittografata scaricata su un file
  • data time nel file di log per ogni evento

Prima di iniziare a utilizzare gli script, è necessario creare un file contente la password criptata in modo che le password non vengano archiviate in testo in chiaro nello script stesso:

mkdir c:\shutdown
Read-Host -Prompt "Enter password" -AsSecureString | ConvertFrom-SecureString | out-file c:\shutdown\cred.txt
(type in the password of the user you want to use for running the script)

Questo è l’output che dovrebbe generarsi:

01000000d08c9ddf0115d1118c7a00c04fc297eb0100000092295625f5c35b4bb8af99be46e6679d0000000002000000000003660000c0000000100
000007b8d21c33686ef6ec751c0f671e7ff510000000004800000a00000001000000022d4534785ecda5799047d48f0f79a4618000000a1376ef3bf
fa5a3a928bee66d68eab5d49b12308f9d0b63f140000002ca923ea8eb54ff11c5864d9f722931a4ec85597

Questo è un hash della password calcolata utilizzando le credenziali di Windows correnti ed è anche connessa alla macchina Windows da cui viene eseguito il comando, quindi questo file password non può essere usato in un altra macchina e può essere utilizzato solo ma dall’utente che lo ha generato.

Lo script è già impostato per utilizzare tale file, basta modificare le variabili nello script.

Qui è possibile scaricare lo script:

https://bitbucket.org/manuel_roccon/vmware-powershell-shutdown/src/master/

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *