在包含许多 ESXi 主机的环境中,使用脚本管理主机比在 vSphere Client 中管理主机更快且不容易出错。
vSphere 包括用于 ESXi 主机管理的多种脚本编制语言。VMware PowerCLI 是 vSphere API 的 Windows PowerShell 接口,包含了用于管理 vSphere 组件的 PowerShell cmdlet。ESXCLI 包含用于管理 ESXi 主机和虚拟机的一组命令。有关参考信息和编程提示,请参见 https://developer.vmware.com。vSphere 管理员文档重点介绍了如何使用 vSphere Client 进行管理。
还可以使用 vSphere Automation SDK 的一个脚本接口,如 vSphere Automation SDK for Python。
过程
- 创建具有有限特权的自定义角色。
例如,考虑创建一个角色,该角色具有一组管理主机的特权但没有管理虚拟机、存储或网络的特权。如果只要使用脚本提取信息,则可为主机创建具有只读特权的角色。
- 在 vSphere Client 中,创建服务帐户并为其分配自定义角色。
如果要严格限制对特定主机的访问权限,则可以创建具有不同访问权限级别的多个自定义角色。
- 编写脚本以执行参数检查或修改,然后运行脚本。
例如,您可以检查或设置主机的 shell 交互式超时,如下所示:
语言 |
命令 |
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 }
|
- 在大型环境中,创建具有不同访问特权的角色并根据要执行的任务将主机分组到文件夹。然后从不同服务帐户对不同文件夹运行脚本。
- 运行命令后,确认更改已生效。