En los entornos con muchos hosts ESXi, la administración de hosts con scripts resulta más rápida y es menos proclive a errores que la administración de hosts desde vSphere Client.

vSphere incluye lenguajes de scripting para la administración de hosts ESXi. VMware PowerCLI es una interfaz de Windows PowerShell para vSphere API, e incluye cmdlets de PowerShell para administrar los componentes de vSphere. ESXCLI incluye un conjunto de comandos para administrar hosts ESXi y máquinas virtuales. Consulte https://developer.vmware.com para obtener información de referencia y sugerencias de programación. La documentación sobre el administrador de vSphere se centra en el uso de vSphere Client para la administración.

También se puede usar una de las interfaces de scripting en vSphere Automation SDK, como vSphere Automation SDK for Python.

Procedimiento

  1. Cree una función personalizada con privilegios limitados.
    Por ejemplo, considere crear una función que contenga un conjunto de privilegios para administrar hosts, pero que no incluya privilegios para administrar máquinas virtuales, almacenamiento o redes. Si el script que desea usar solamente extrae información, puede crear una función con privilegios de solo lectura para el host.
  2. En vSphere Client, cree una cuenta de servicio y asigne la función personalizada a esa cuenta.
    Puede crear varias funciones personalizadas con diferentes niveles de acceso si desea que el acceso a determinados hosts sea bastante limitado.
  3. Escriba scripts para comprobar o modificar parámetros, y ejecute esos scripts.
    Por ejemplo, puede comprobar o establecer el tiempo de espera interactivo del shell de un host de la siguiente manera:
    Lenguaje Comandos
    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. En entornos grandes, cree funciones con diferentes privilegios de acceso y hosts de grupos en carpetas según las tareas que desee realizar. Posteriormente, puede ejecutar scripts en diferentes carpetas desde diferentes cuentas de servicio.
  5. Verifique que se hayan producido cambios después de ejecutar el comando.