Scripting di base di PowerCLI per VMware vSphere

Precedentemente, abbiamo esaminato PowerCLI – cos’è, come installarlo e integrarlo in Windows Powershell ISE. Ora, diamo un’occhiata allo scripting di base, inclusa la connessione, i comandi PowerCLI, nonché il looping.

Scripting di base di PowerCLI

Diamo un’occhiata a alcuni comandi di base di PowerCLI per vedere quanto sia facile iniziare a estrarre informazioni dal nostro ambiente vSphere con PowerCLI. Tenete presente che quanto segue non è assolutamente destinato a essere un tutorial esaustivo, ma piuttosto un’introduzione a PowerCLI e come iniziare a eseguire comandi e imparare ad automatizzare il vostro ambiente.

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

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

  • connect-viserver -server 〈tuo_server〉

Quando si esegue il comando, verrà richiesto di inserire le credenziali di accesso. Digitare il nome utente e la password per il vostro server ESXi o per il server vCenter.

Uno dei comandi più basilari che possiamo eseguire quando ci connettiamo a ESXi o a vCenter è vedere tutte le VM presenti nell’ambiente. Utilizziamo il comando get-vm per mostrare informazioni sulle VM guest.

  • Get-VM - Il comando get-vm elenca le VM in esecuzione sull'host connesso

Per ottenere informazioni più dettagliate dal comando get-vm, possiamo mostrare tutte le informazioni 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 VM, la cartella in cui è situata e molti altri dettagli.

Ora, restituiamo informazioni specifiche utili dal comando Get-VM. Troviamo le VM nello stato PoweredOff. Possiamo ottenere informazioni dal comando Get-VM e quindi inviarle a where-object per selezionare le informazioni specifiche che vogliamo interrogare – in questo caso PowerState. Come puoi vedere, ci sono mondi di possibilità nel ottenere varie informazioni sulla VM e inviare queste informazioni a un altro comando PowerShell.

  • Get-VM | where-object {$_.PowerState -eq "PoweredOff"}

Come puoi vedere, questo visualizza solo le VM nello stato di “PoweredOff”. Questo può essere estremamente utile. Possiamo persino inviare il risultato del comando precedente al comando Start-VM. Fondamentalmente, possiamo ottenere tutte le VM spente e quindi accendere quelle VM.

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

Cosa succede se vogliamo spegnere specifiche VM? Possiamo farlo. Possiamo chiamare la VM per nome e quindi usare il comando Stop-VMGuest che avvia lo spegnimento del sistema operativo guest.

  • Get-VM 〈tuaVM〉 | Stop-VMguest

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

Supponiamo di voler vedere quanti VM stanno eseguendo con più di 1 CPU assegnata. Di nuovo, possiamo usare il comando where-object per selezionare l’oggetto NumCpu.

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

PowerCLI Cicli

I cicli ti permettono di eseguire la stessa operazione più volte su oggetti selezionati o per un numero di volte attraverso un loop. Ad esempio, con un ciclo foreach, possiamo ripetere un’azione specifica più volte. È impostato come nel pseudo codice qui sotto:

foreach ($var in $vars){
Fai qualcosa…
}

Se vogliamo essere specifici su quali oggetti eseguiremo l’azione, possiamo, ad esempio, scorrere una lista specifica di VM da un file di testo. Per popolare il file di testo, possiamo eseguire il nostro comando Get-VM selezionando le proprietà desiderate, quindi passare tutto a un file di testo. Possiamo quindi usare PowerShell per leggere il file di testo e inserire le VM in un array su cui possiamo eseguire un’azione. Qui sotto stiamo aggiungendo un nuovo adattatore di rete alle VM 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 "〈Nome del gruppo di porte〉" -Type "VMXNET3" –startconnected
}

Risorse

Ci sono molte ottime risorse disponibili sul web, tra cui siti di blog personali, documentazione ufficiale, esempi di codice, ecc. Quello che ho scoperto è che se riesci a pensare a qualcosa che vuoi fare, molto probabilmente c’è qualcuno che ha già scritto una riga di codice PowerCLI che farà ciò che desideri. La cosa buona è che normalmente puoi trovare qualcosa di molto vicino a ciò che vuoi fare e, con pochissime modifiche dopo aver appreso le basi, puoi modificarlo per adattarlo alle tue esigenze. Facendo ciò, impari anche PowerCLI e come funziona, così come come modificare il codice per eseguire il compito che devi compiere.

A great place to start with documentation and other resources is the official VMware PowerCLI release and documentation site. Here, you can download the binaries as well as the official User’s Guide.

Ci sono anche tonnellate di libri con script ed esempi di script che possono essere dissezionati e modificati. Tieni presente la comunità di amministratori VMware là fuori che, per la maggior parte, sono felici di condividere la conoscenza che hanno appreso da qualcun altro nel loro cammino verso la padronanza di PowerCLI. Raggiungi quelli nella tua comunità per aiuto con dettagli specifici o solo principi generali.

Pensieri

PowerCLI è molto potente, per dirne una. Abbiamo solo sfiorato la superficie negli esempi sopra mostrati. Qualsiasi compito che fai ripetitivamente, o che è ingombrante da fare nel client web, sono ottimi candidati per la scrittura di script con PowerCLI. Infatti, di solito è così che la maggior parte viene introdotta a PowerCLI: hanno un compito che devono eseguire automaticamente o un’azione che si basa su altre azioni in vSphere, o ancora azioni ripetitive che si prestano bene alla scritturazione.

Il modo migliore per imparare PowerCLI è scaricarlo, installarlo e iniziare ad usarlo in un ambiente di laboratorio come un laboratorio domestico. La vera potenza di un ambiente VMware vSphere viene sbloccata solo quando si comprende il potenziale dell’automazione nel prendere il controllo di vSphere. Quindi, inizia a scriptare con PowerCLI e non guarderai mai più indietro!

Source:
https://www.nakivo.com/blog/basic-powercli-scripting-vmware-vsphere/