虽然我们总是在vSPhere Client的GUI中完成各种工作,这并不代表GUI对任何工作而言都是最适合的工具。学会通过VMware脚本来节省时间和工作量。

  虽然我们总是在vSPhere Client的GUI中完成各种工作,这并不代表GUI对任何工作而言都是最适合的工具。学会通过VMware脚本来节省时间和工作量。
  IT专家不应该是 “如果你只有一把锤子,那么在眼里什么都是钉子。”如果你每天通过vSphere Client管理虚机和宿主机,很自然地会把它当作应对各种情况的首选。当我们需要执行横跨多个ESXi宿主机或虚机的动作时,vSphere Client GUI(graphical user interface图形界面)通常显得耗时又费力。让我们重新搜索工具箱,使用CLI(command line interface)命令行工具。
  选择VMware 命令行
  CLI和脚本用于执行重复的任务,可大幅减少管理员的工作量。VMware提供多种命令行工具,因此你可以就近选择最适合的工具完成任务。
  所有的VMware脚本工具都是围绕vSphere API(application programming interface,由vCenter和ESXi服务器提供的一组Web服务)来封装的。vSphere API非常复杂难懂,因此这些封装可以让用户通过自己熟悉的计算机语言来访问vSphere API。最早的SDK是Perl,使用vSphere CLI(vCLI)命令来复制早期的ESX Service Console界面。还有一些为Java和嵌入式PowerShell(PowerCLI)服务的SDK。
  日常工作主要在Windows平台的VMware用户,从逻辑上很可能选择PowerCLI作为首选的vSphere管理命令行。这个选择很好,它很一款非常灵活和强大的工具,PowerCLI可以支持命令提示符或脚本的运行。微软创建PowerShell是为了给系统管理员提供各种自动化工具,因此它不仅仅是vBScript这样重新定义的开发者工具。学习曲线非常的平缓,而且它提供的一些概念可以极大地改善PowerShell的效率。PowerCLI最大的优势之一就是其强大的社区,新手可以从大师那里学习经验,每个人都可以共享解决方案。很多供应商也选择了PowerShell,因此某个脚本甚至可以跟vSphere、Microsoft Exchange和存储阵列直接交互。
  PowerCLI的一个用法就是报告信息,尤其是在大型VMware环境中。通过连接到某个物理设备的CD-ROM驱动器或ISO镜像来报告每台虚机的状态,只需一行PowerCLI脚本。该脚本甚至可以直接输出到位于Web页面上的对所有管理者共享的HTML文件。定制该脚本定期运行,可以让所有人得到通知。如果通过vSphere Client GUI获取同样的虚机报告信息可能会花费一小时或更长时间。借助VMware脚本,执行该命令只需几分钟而且不需要人为干涉。
  非重复性的报告也可以从PowerCLI脚本中获益,例如当规划升级到VMXNet3时所需的报告。报告所有多于两颗vCPU或使用灵活网络适配器的虚机状态,使用PowerCLI脚本来完成该任务要比vSphere Client GUI简单得多。即使类似的信息只需要采集一次,最好保留命令行或脚本的副本以免将来您还会需要相似的报告。
  如果您使用过vMA(vSphere Management Assistant),那么就用到了Perl SDK。所有的VMware vicfg命令都是Perl脚本,esxcli也是Perl脚本。这些命令通常用于新ESXi服务器安装完成后的配置过程,比如设置热拔插存储设备、发布规则或修改高级设置(草稿和系统日志路径等)。相同的命令对实现自动化的ESXi服务器安装非常有帮助,通过简单的文本文件可避免启用安装向导。
  另外一个非常有用的VMware工具是ESXi Tech Support模式,该命令用于ESXi宿主机。可用于宿主机的故障诊断、存储和网络问题很多时候在Tech Support模式下解决要简单一些。使用esxtop可以从宿主机实时获取详细的性能信息。
  关注工具集
  用命令行做坏事时也一样便捷。CLI很少提示“是否确认?”我把命令行比作电锯——非常有用,但如果使用不当就会受伤。举个例子,如下一行PowerCLI命令:
  Get-VM | stop-VM –confirm:$False。这简单的一行会关闭整个环境中的所有虚机。不过也不必过度担心命令行,只需要小心使用。
  有些vSphere管理员除了vSphere Client GUI之外从不尝试别的工具,其实很多任务更适合于命令行或脚本流程。尝试打破自我限制,使用合适的工具来完成相应的任务,可以更加正确地完成任务也提升满意度。