Negli ambienti con molti host ESXi, la gestione degli host con script è più veloce e meno soggetta a errori rispetto alla gestione degli host da vSphere Client.

vSphere include diversi linguaggi di scripting per la gestione degli host ESXi. VMware PowerCLI è un'interfaccia di Windows PowerShell a vSphere API e include cmdlet PowerShell per amministrare i componenti vSphere. ESXCLI include una serie di comandi per la gestione di host ESXi e macchine virtuali. Vedere https://developer.vmware.com per informazioni di riferimento e suggerimenti sulla programmazione. La documentazione dell'amministratore di vSphere è incentrata sull'utilizzo di vSphere Client per la gestione.

È inoltre possibile utilizzare una delle interfacce di scripting per vSphere Automation SDK, come ad esempio la vSphere Automation SDK per Python.

Procedura

  1. Creare un ruolo personalizzato con privilegi limitati.
    Ad esempio, prendere in considerazione l'eventualità di creare un ruolo che disponga di un set di privilegi per la gestione degli host, ma che non disponga di privilegi per la gestione di macchine virtuali, archivio o rete. Se lo script che si desidera utilizzare estrae solo informazioni, è possibile creare un ruolo con privilegi di sola lettura per l'host.
  2. Da vSphere Client, creare un account del servizio e assegnargli il ruolo personalizzato.
    È possibile creare più ruoli personalizzati con diversi livelli di accesso se si desidera che l'accesso a determinati host sia equamente limitato.
  3. Scrivere script per eseguire il controllo o la modifica dei parametri ed eseguirli.
    Ad esempio, è possibile controllare o impostare il timeout interattivo della shell di un host nel modo seguente:
    Lingua Comandi
    ESXCLI
    esxcli <conn_options> system settings advanced get /UserVars/ESXiShellTimeOut
    esxcli --formatter=csv --format-param=fields="Path,Int Value" 
    system settings advanced list | grep /UserVars/ESXiShellTimeOut
    PowerCLI
    #List UserVars.ESXiShellInteractiveTimeOut for each host
    Get-VMHost | Select Name,
     @{N="UserVars.ESXiShellInteractiveTimeOut";E={$_ 
    | Get-AdvancedSetting -Name UserVars.ESXiShellInteractiveTimeOut
    | Select -ExpandProperty Value}}
    
    # Set UserVars.ESXiShellTimeOut to 900 on all hosts
    Get-VMHost 
    | Foreach { Get-AdvancedSetting -Entity $_ -Name UserVars.ESXiShellInteractiveTimeOut | Set-AdvancedSetting -Value 900 }
    
  4. Negli ambienti di grandi dimensioni, creare ruoli con privilegi di accesso diversi e raggruppare gli host in cartelle in base alle attività che si desidera eseguire. È quindi possibile eseguire script su cartelle differenti da account di servizi diversi.
  5. Verificare che le modifiche abbiano luogo dopo l'esecuzione del comando.