如果你是一名Windows管理员,最近又承担了接管VMware vSphere 4的任务,得知你熟悉且热爱的PowShell平台也能管理VMware环境一定让你很高兴。

与普通的看法相反,VMware是用来帮助管理员完成工作的,虽然需要时会涉及盗用微软的技术。进入PowerCLI,设置好PowerCLI以便使用,只不过是在现有Windows PowerCLI安装基础上进行“下一步-下一步-完成”的安装。

Windows管理员经常问起的一个问题是他们是否需要学习Linux。我对此的回答是你们真的应该忘掉学习Linux和ESX控制指令这件事。不仅因为一旦ESXi变成VMware标准,那些技术的价值就减少了,还因为ESX控制也没有提供多少指令。相反地,PowerCLI中逐字算有数百个指令集,它们在控制台环境内提供一定程度的功能和不可用控制。

让我们来看看PowerCLI的一些最重要的用途。

使用PowerCLI创建数据中心

关于PowerCLI价值最好的一些例子是这些指令集允许你在vCenter里创建对象,当拆卸、重置和重建我的实验平台时,我一直使用这些指令,但它们也可以用来扩展出一个新的虚拟数据中心。

一旦vCenter安装好,你的主要任务将是创建数据中心、集群和资源池。如果你追求连贯性和自动化,你可以通过使用PowerCLI搞定这一切。为了创建一个新数据中心,你需要连接相关的vCenter(Connect-VISServer),然后使用这个新数据中心指令创建数据中心对象。

PowerCLI脚本的第一部分只通过一个管理账户连接到vCenter,第二部分建立一个称为“$root”的变量,用来为创建数据中心设置位置,如果获取文件夹指令与非递归转换一起运行,新数据中心的位置将被设置在vCenter树的最上面。如下所示,我的三个数据中心(UpTown、MidTown和DownTown),用该新数据中心指令和-name变量来设置它们的名称是一个简单过程。

connect-viservervcnyc.corp –username corp\administrator –passwordPassword1
$root = Get-Folder –NoRecursion
new-datacenter –location $root -name ‘NYC DataCenter - UpTown'
new-datacenter –location $root -name ‘NYC DataCenter - MidTown’
new-datacenter –location $root -name ‘NYC DataCenter - DownTown'

下面的截图显示了每个命令的结果。


图1. 使用PowerCLI传进数据中心对象

用PowerCLI创建集群

当然,你想做的下一件事是开始创建你每个数据中心里的VWware集群,这可以通过新集群指令来完成,这些指令支持许多选项以帮助你轻松配置集群的VMware高有效性(HA)和分布式资源中心(DRS)。在下面的PowerCLI脚本里,我在“NYC DataCenter-Downtown”中创建了一个叫“Cluster”的集群,这聪明的东西真就通过下面的附加参数添加进来了:

new-cluster –location (get-datacenter –name 'NYC DataCenter –
DownTown') -name 'Cluster' -HAEnabled
-HAAdmissionControlEnabled –HAFailoverLevel 2-DRSEnabled
–DRSMode PartiallyAutomated

因此,使用-HAEnabled可以激活集群上VMware的HA和DRS技术,将-HAFailover等级设置为2,表示在虚拟机失效备援停止工作前,我可以承受最多2个ESX主机的损失。这是一个确保在相当数量主机出故障的情况下,系统不会成为超负荷状态的简单方法。

DRS模式参数提供三种选项(半自动、全自动和手动),依次各项提供越来越多的自动化。例如,当虚拟机开机后,半自动选项会允许集群决定VM运行在那个ESX主机上。请记住,管理员仍然会接到通知说,何时DRS会认为移动VM并基本控制集群移动对话框的主要DRS部分上的单选框是个好主意。


图2. VM集群设置的自动级别

用PowerCLI创建资源池

也许下一阶段便将是在VMware集群上定义资源池了。正如你所知道的,VMware资源池是一种收集VMware集群大资源及把它们分割成便于管理单元的方法。为每个应用类型(比如活动目录域控制器,还有SQL服务器等)创建一个资源池很常见。通过使用新的-resourcepool指令便可使其自动化,正如我们使用的其它指令,这个也需要设置位置参数,并创建该资源池的名称。重复此过程你就创建了所需的所有资源池。

new-resourcepool –location (get-datacenter –name 'NYC DataCenter - DownTown' | get-cluster –name 'Cluster') -name ‘Web Servers’

new-resourcepool –location (get-datacenter –name 'NYC DataCenter - DownTown' | get-cluster –name 'Cluster') -name ‘Database Servers’

用这种方式使用PowerCLI的有趣在于,在创建资源池之前,你通常将需要的ESX主机添加在集群上,但是通过PowerCLI你能在添加ESX主机之前创建你的资源池。下面是PowerCLI如何执行那些vSphere客户端通常拒绝任务的好例子。


图3. 使用PowerCLI创建资源池

通过PowerCLI添加ESX主机

管理员接下来要执行的一个大任务涉及往集群上添加ESX主机,这可以通过在PowerCLI中的add-vmhostcmdlet指令来完成。

add-vmhost esx1.corp.com -location (get-datacenter –name 'NYC DataCenter- DownTown'| get-cluster–name 'Cluster') -user root –password Password1 -force

通过一起使用get-datacenter和get-cluster指令,我们可以明确指定vCenter中的一个对象为ESX主机将被添加到目录中的正确位置。把它们添加到HA集群上也会触发HA代理到ESX主机的启动。

这里,-force参数是用于接收安装ESX主机过程中生成的默认SSL证书,如果没有-force参数,为了成功添加ESX主机到vCenter上,你需要完全信任SSL证书;否则任务将失败,并出现错误提示“由于正在使用自签SSL证书,认证指定主机授权无效。”


图4.添加ESX主机到集群中

正如你所看到的,PowerCLI的功能非常强大,它的价值体在于能够简易地自动执行任务。如果你掌握了Windows PowerShell基础,学会VMware中的附加指令相对比较容易。

年复一年,VMware加入更多的指令让你的日常管理工作生活更加轻松,但如果你愿意,你也可以超越那些指令走得更远。PowerCLI可以通过一个网络服务器引擎和VMware的SDK结合使用,这样,实际上你在vSphere客户端执行的所有任务都可以通过SDK用PowerCLI自动执行。VMware推出的新PowerCLI版本可以让你通过一个简单的指令进入所需要访问配置选项,但在那之前,上述方法是一个很好的的选择。