虚实相映,相得益彰 — VMware的自动化控制
虚拟化技术的出现极大程度上的延展了固有计算资源服务能力,使得复杂计算环境(如分布式环境、嵌入式环境)的搭建不拘泥于物理设备的限制。作为虚拟化行业的排头兵,VMware的软件为虚拟化的应用构筑了一个良好的基础。
本文主要以VMware Workstation为例。
一、命令行控制虚拟机
在当前主流操作系统中,VMware Workstation 都提供了一个良好的GUI界面,利用GUI界面,可以直观创建各种虚拟机环境,通过GUI对虚拟机进行控制。GUI操作直观,但效率较低。例如,当需要对虚拟机进行一些自动化操作时,尤其是管理多台虚拟机,靠人工GUI操作执行效率显然太低,必须依靠自动化的方式进行。为此,VMware 也提供了命令行接口 vmrun,利用 vmrun 命令行操作,可方便实现虚拟机的各种自动化控制。
1.1 概述
vmrun 是 VMware Workstation 中提供的一个命令行接口程序,可以实现对VMware Workstation虚拟机或远程VMware ESXi虚拟机的大多数管理功能。vmrun功能非常强大,既可以对虚拟机进行整体的宏观管理,也可以对虚拟机进行内部细粒度的微观管理。
对虚拟机进行整体的宏观管理包括:
- 开关管理
包括对虚拟机“开机、关机、休眠、重启、暂停、恢复”等操作; - 快照管理
包括对虚拟机“创建快照、列出快照、删除快照、恢复到指定快照点”等操作; - 注册虚拟机、删除虚拟机、克隆虚拟机等功能
对虚拟机进行内部细粒度的微观管理主要针对虚拟机内部运行的各种程序进行管控,包括:执行客户机中程序、添加管理共享文件夹、列表客户机进程、清除客户机进程等操作。
vmrun可适用各类虚拟机,方便对虚拟机进行各类自动化操作,结合具体的平台脚本,几乎可实现对虚拟机所有操作的自动化管理。
1.2 典型指令介绍
vmrun指令的由4个部分组成:
1)AUTHENTICATION-FLAGS
身份标志,身份标志有两层含义,首先,必须表明虚拟机身份,即 vmrun 控制的是哪种类型的虚拟机;第二,身份标志也可用于表示虚拟机内系统的用户身份。典型的身份标志参数如下:
- 表明虚拟机的身份
- -T + hostType ( ws | fusion | player )
- -T ws 用于 VMware Workstation
- -T fushion 用于 Mac 上的 VMware Fusion
- -T player 用于 VMware player
- -vp + 加密虚拟机的密码
- -T + hostType ( ws | fusion | player )
- 表明虚拟机内系统用户身份
- -gu + 虚拟机系统用户名
- -gp + 虚拟机系统用户密码
2)COMMAND + PARAMETERS
虚拟机控制指令和指令参数一起使用,对虚拟机进行精细控制。典型的控制指令和参数如下:
- 针对虚拟机整体控制:
- 电源指令(POWER COMMAND)
- 包括 start / stop / reset / suspend / pause / unpause
- 快照指令(SNAPSHOT COMMAND)
- 通用命令(GENERAL COMMAND)
- list — 列出后所有运行中的虚拟机
- clone — 克隆虚拟机
- 电源指令(POWER COMMAND)
- 针对虚拟机内系统的控制:
- 虚拟机内客户操作系统指令(GUEST OS COMMAND)
- runProgramInGuest — 虚拟机客户OS内运行指定程序
- fileExistsInGuest — 虚拟机客户OS内是否存在文件
- listProcessesInGuest — 虚拟机客户OS的进程列表
- CopyFileFromHostToGuest — 虚拟机和宿主机之间拷贝文件
- 虚拟机内客户操作系统指令(GUEST OS COMMAND)
全面的指令和参数可以在命令行执行 vmrun 或 vmrun –help来查询。
1.3 典型指令应用
1)开启虚拟机
vmrun -T ws start "/home/vmware/Win7sp1_32bit.vmx"
vmrun -T ws start "C:\ubuntu/Ubuntu.vmx" nogui (后台启动,无GUI界面)
2)关闭虚拟机
vmrun -T ws stop "C:\vm12forssd\Ubuntu\Ubuntu.vmx"
3)列出当前正在运行所有虚拟机
vmrun list
4)在虚拟机内系统中运行程序
前置条件:对应虚拟机系统已经在运行;
指令形式:
vmrun -T ws -gu win7gogetter -gp 123abc
runProgramInGuest /home/vmware/Win7sp1_32bit.vmx
<font color="#0000dd"><strong>[-nowait -interactive -activeWindow]</strong></font>
"C:\windows\system32\calc.exe"
指令含义:
在 Windows7 虚拟机(用户名 win7gogetter,密码 123abc)中运行 calc 程序。其中参数:
-nowait 程序执行同/异步模式参数
不加该参数,命令行不立刻返回,等待客户虚拟机系统中程序结束才返回;
加上该参数,命令行不等虚拟机中结果,直接返回;
-interactive 交互界面开启参数
不加该参数,windows程序在后台运行,无交互界面;
加上该参数,GUI中出现运行程序的交互界面;
-activeWindow 活跃窗口参数
<u>必须与-interactive配合使用</u>,加上该参数,
GUI中出现运行程序的交互界面被激活成为活动窗口;
5)查看虚拟机内系统中进程列表
vmrun -T ws -gu win7gogetter -gp 123abc
listProcessesInGuest /home/vmware/Win7sp1_32bit.vmx
6)查看虚拟机内系统中某个文件是否存在
vmrun -T ws -gu win7gogetter -gp 123abc
fileExistsInGuest /home/vmware/Win7sp1_32bit.vmx
"C:\windows\system32\cmd.exe"