Scripting di Base PowerCLI per vSphere VMware

In precedenza, abbiamo esaminato PowerCLI – che cos’è, come installarlo e integrarlo in Windows Powershell ISE. Ora, diamo uno sguardo allo scripting di base tra cui la connessione, i commandlets PowerCLI e il looping (la rotazione).

Prova NAKIVO Backup & Replication:

Vincitore del Premio d’Oro “Best of VMworld 2018” per la Protezione dei Dati

Scripting di Base PowerCLI

Diamo un’occhiata ad alcuni commandlets PowerCLI  per vedere quanto è facile iniziare ad ottenere informazioni dal nostro ambiente vSphere con PowerCLI. Tieni presente che ciò che segue non pretende essere in alcun modo un tutorial onnicomprensivo, ma piuttosto un’introduzione a PowerCLI e a come iniziare a utilizzare i cmdlet e imparare ad automatizzare il tuo ambiente.

Il primo cmdlet che dobbiamo eseguire è quello per connetterci effettivamente al nostro ambiente vSphere. È possibile connettersi direttamente a un host ESXi o al Server vCenter.

Per connettersi, esegui il seguente comando in una sessione PowerShell abilitata PowerCLI:

  • connect-viserver –server 〈yourserver〉

Quando si esegue il comando, verranno richieste le credenziali di accesso. Immetti il nome utente e la password per il tuo server ESXi o il Server vCenter.

Basic PowerCLI scripting

Uno dei comandi di base che possiamo eseguire quando ci colleghiamo a ESXi o vCenter è vedere tutte le VM nell’ambiente. Utilizziamo il cmdlet get-vm per mostrare le informazioni sulle VM guest.

  • Get-VM – Il cmdlet get-vm elenca le macchine virtuali in esecuzione sull’host collegato.

get-vm commandlet

Per ottenere più informazioni dettagliate dal commandlet get-vm, possiamo mostrare le informazioni complete con il comando:

  • Get-VM | fl – Visualizza informazioni più dettagliate come il Sistema Operativo Guest, i pool di Risorse, il livello della versione dell’hardware della VM, la cartella in cui si trova, e molti altri dettagli.

Get VM Full Information

Ora restituiamo informazioni utili specifiche dal commandlet Get-VM. Scopriamo le macchine virtuali che si trovano nello stato PoweredOff. Possiamo ottenere informazioni dal commandlet Get-VM e quindi inserirle nel where-object per selezionare le informazioni specifiche per le quali vogliamo eseguire la query – in questo caso PowerState. Come puoi vedere, ci sono tantissime possibilità di ottenere varie informazioni sulle VM e inserire queste informazioni in un altro commandlet PowerShell.

  • Get-VM | where-object {$_.PowerState –eq “PoweredOff”}

Get-VM PowerState

Come puoi vedere, qui si visualizzano solo le VM che si trovano nel PowerState “PoweredOff”. Questo può essere estremamente utile. Possiamo anche reindirizzare il risultato del comando sopra nel commandlet Start-VM. Quindi in sostanza possiamo ottenere tutte le VM spente e quindi accendere quelle VM.

  • Get-VM | where-object {$_.PowerState –eq “PoweredOff”} | Start-VM

Start-VM commandlet

E se volessimo arrestare certe macchine virtuali? Possiamo sempre farlo. Possiamo chiamare la VM per nome e quindi usare il commandlet Stop-VMGuest che avvia un arresto del sistema operativo guest.

  • Get-VM 〈yourvm〉 | Stop-VMguest

Stop-VMguest commandlet

Se non vuoi ricevere la conferma dell’azione, possiamo aggiungere il parametro –confirm:false:

Stop-VMguest –confirm:false

Diciamo che vogliamo vedere quante macchine virtuali abbiamo in esecuzione che hanno più di 1 CPU assegnata. Di nuovo, possiamo usare il commandlet where-object per selezionare l’oggetto NumCpu.

  • Get-VM | where-object {$_.NumCpu –gt 1 }

where-object commandlet

Loop PowerCL

I loop (cicli di rotazione) consentono di eseguire la stessa operazione più volte in relazione agli oggetti selezionati o per un numero di volte programmato per la rotazione. Ad esempio, con un ciclo foreach, possiamo eseguire più volte una determinata azione. È configurato come lo pseudo codice qui sotto:

foreach ($var in $vars){
Do something…
}

Se vogliamo ottenere informazioni specifiche sugli oggetti su cui eseguiremo l’azione, possiamo, ad esempio, eseguire la rotazione con un elenco specifico di VM da un file di testo. Per popolare il file di testo, possiamo eseguire il nostro commandlet Get-VM selezionando le proprietà che vogliamo, quindi reindirizzarlo a un file di testo. Possiamo quindi utilizzare PowerShell per leggere il file di testo e posizionare le VM in una matrice su cui possiamo effettuare la rotazione ed eseguire un’azione. Di seguito stiamo aggiungendo un nuovo adattatore di rete alle macchine virtuali nell’elenco.

Get-vm | where-object {$_.MemoryGB –eq 4 } | select -ExpandProperty Name | out-file c:\VMs.txt
$vms = get-content c:\VMs.txt
Foreach-object ($vm in $vms) {
new-networkadapter -vm $vms -NetworkName “〈Port group name〉” -Type “VMXNET3” –startconnected
}

Edizione Gratuita di NAKIVO Backup & Replication: scarica ed esegui il backup delle tue macchine virtuali VMware.

Risorse

C’è sono un sacco di ottime risorse sul web tra cui siti di blog personali, documentazione ufficiale, esempi di codice, ecc. Ho scoperto che se riesci a inventare qualcosa che vuoi fare, molto probabilmente c’è qualcuno che ha già scritto una linea di codice PowerCLI che farà ciò che vuoi. La cosa buona è che normalmente puoi trovare qualcosa di molto vicino a quello che vuoi fare, e dopo aver imparato le cose di base, puoi modificarlo con pochi passi per soddisfare le tue esigenze. Inoltre, nel farlo, stai imparando PowerCLI e come funziona, nonché come modificare il codice per eseguire il compito che devi compiere.

Un ottimo punto di partenza per la documentazione ed altre risorse è il  sito ufficiale di rilascio e di documentazione di PowerCLi Vmware. Qui puoi scaricare i file binari e la Guida utente ufficiale.

Ci sono anche tonnellate di libri con script ed esempi di script che possono essere sezionati e modificati. Tieni a mente la comunità di amministratori di VMware che, per la maggior parte, sono lieti di condividere le conoscenze apprese da qualcun altro nel diventare esperti con PowerCLI. Rivolgiti a quelli della tua comunità per ottenere aiuto con specifiche o solo con principi generali.

Riflessioni

Di fatto, questo è il modo in cui la maggior parte prende conoscenza di PowerCLI – hanno un’attività che devono eseguire automaticamente o un compito basato su altri compiti in vSphere, o ancora compiti ripetitivi adatti allo scripting. Il modo migliore per imparare PowerCLI è scaricarlo, installarlo e iniziare a utilizzarlo in un ambiente lavorativo come un laboratorio domestico. La vera potenza di un ambiente vSphere VMware si rivela solo quando vedi il potenziale di utilizzare l’automazione per assumere il controllo di vSphere. Quindi, inizia lo scripting con PowerCLI e non tornerai più indietro!

Scripting di Base PowerCLI per vSphere VMware
Rate this post

Share:

LinkedIn Google+