Hyper-V在市场份额上要比VMware要落后,但微软在慢慢地追赶。 企业喜欢微软的价格优势——有的时候甚至是免费的——以及其不断增加的平台特性。这些好处会加速管理员去部署更多数量的Hyper-V主机。 我们可以使用自动化方法在一台运行Windows Server 2012 R2的服务器上配置Hyper-V主机,从而使这个过程可重复化。
本文会解释如何使用Windows PowerShell,特别是PowerShell期望状态配置(PowerShell Desired State Configuration,DSC)来实施上述的部署。 那么在一个已存在的Windows服务器上部署一个Hyper……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
TechTarget
官方微博
TechTarget中国
Hyper-V在市场份额上要比VMware要落后,但微软在慢慢地追赶。
企业喜欢微软的价格优势——有的时候甚至是免费的——以及其不断增加的平台特性。这些好处会加速管理员去部署更多数量的Hyper-V主机。
我们可以使用自动化方法在一台运行Windows Server 2012 R2的服务器上配置Hyper-V主机,从而使这个过程可重复化。本文会解释如何使用Windows PowerShell,特别是PowerShell期望状态配置(PowerShell Desired State Configuration,DSC)来实施上述的部署。
那么在一个已存在的Windows服务器上部署一个Hyper-V主机需要什么呢?对于我们的目的来说,需要三样东西:几个Windows功能,一个存储VM的目录和一个将VM连接到网络中的交换机。
搭建框架
在开始任何PowerShell DSC项目的时候,首先需要创建一个PS1 PowerShell cmdlet和写入一个配置模块,我们会称这个配置为HyperVBuild。
Configuration HyperVBuild {
}
配置内容和一个函数有点类似,它有可以随意执行的代码在其中,不过它的运作有一些不一样。在配置模块后面,通常会接着针对这份配置的参数,就像PowerShell函数一样,其中一种常见的参数是$NodeName。这个参数会指定这份配置文件将会在哪台机器上进行实施。在这个例子中,我们默认填写本机,因为这个脚本就保存在我们想创建Hyper-V主机的机器上。
添加关于node的代码块然后给$NodeName参数赋值。它会告诉Windows去创建一个配置文件,这个配置文件将会给$NodeName参数里面定义的机器名这台机器使用。
Configuration HyperVBuild {
param(
[string]$NodeName = 'localhost'
)
node $NodeName {
}
}
为Hyper-V添加一个连接器
当框架已经搭建好后,我们需要导入一个xHyper-V模块。介于Hyper-V交换机的创建是必要的,我们需要PowerShell DSC模块来完成这个功能。xHyper-V不是Windows自带的模块,不过可以到微软Github资源库上去下载这个模块。将这个模块放置到C:Program FilesWindowsPowerShellModules这个目录下,它就可以被所有以后创建的脚本引用了。
敲入Import-DscResource cmdlet配置并且指定模块名称为xHyper-V
Configuration HyperVBuild {
param(
[string]$NodeName = 'localhost'
)
Import-DscResource –ModuleName xHyper-V
node $NodeName {
}
}
然后我们可以开始添加我们需要的资源了。首先,需要添加Hyper-V Windows功能。这需要用到一个Windows自带的PowerShell DSC资源。创建一行以WindowsFeature为资源名开头的代码,随后是代表这个资源的标签。在这个例子中,我们暂且叫这个标签为Hyper-V。
然后在代码块中,使用Ensure属性并将其置为Present来安装Windows特性。然后将需要在配置运行的时候安装的Windows功能的名字写在下面。
WindowsFeature 'Hyper-V' {
Ensure='Present'
Name='Hyper-V'
}
之后,我们还需要确保安装Hyper-V-PowerShell功能,在这里我们创建了另一个代码块。
WindowsFeature 'Hyper-V-Powershell' {
Ensure='Present'
Name='Hyper-V-Powershell'
}}
下一步,创建VM之前我们需要一个目录,我们需要确保其中一个是C:VMs。这里需要用到File资源来创建目录,这个File资源有一个称之为Type的属性,这个属性可以定义一个文件或者目录。
File VMsDirectory {
Ensure = 'Present'
Type = 'Directory'
DestinationPath = "$($env:SystemDrive)VMs"
}
最后一个特性,我们使用xHyper-V模块内的一个称之为xVMSwitch的资源来创建和配置Hyper-V交换机。将Type置为Internal来创建一个VM无法向主机外部通信的网络。
xVMSwitch LabSwitch {
DependsOn = '[WindowsFeature]Hyper-V'
Name = 'LabSwitch'
Ensure = 'Present'
Type = 'Internal'
}
注意到DependsOn属性。这个属性可以用在所有的资源内,它允许你决定资源被执行的顺序。在这里,我们确保了在创建交换机之前必须先安装Hyper-V Windows特性。
你现在应该有一个类似这样得配置文件。
configuration HyperVBuild
{
param (
[string]$NodeName = 'localhost'
)
Import-DscResource -ModuleName xHyper-V
node $NodeName {
WindowsFeature 'Hyper-V' {
Ensure='Present'
Name='Hyper-V'
}
WindowsFeature 'Hyper-V-Powershell' {
Ensure='Present'
Name='Hyper-V-Powershell'
}
File VMsDirectory
{
Ensure = 'Present'
Type = 'Directory'
DestinationPath = "$($env:SystemDrive)VMs"
}
xVMSwitch LabSwitch {
DependsOn = '[WindowsFeature]Hyper-V'
Name = 'LabSwitch'
Ensure = 'Present'
Type = 'Internal'
}
}
}
现在配置已经建立好了,然后需要在配置执行后创建一个MOF文件并将其应用到系统中去。要达到这个效果,可以像操作PowerShell功能一样通过调用HyperVBuild这个名字来执行配置文件。这将会创建一个和其名字一样的文件夹,在这个文件夹内有一个名为localhost.mof的MOF文件。
最后一步是将这个配置文件应用到本机中去。要这样做需要使用Start-DscConfiguration cmdlet命令并且使用一些不同的参数。
Start-DscConfiguration -Path .HyperVBuild -Wait -Force
第一个参数是Path,它为Start-DscConfiguration命令指定了放置MOF文件的目录。然后-Wait参数保证了Start-DscConfiguration会等待整个过程完成才会释放对控制台的控制。最后,-Force参数告诉Start-DscConfiguration去推送这个配置而不是拉取配置。Push/pull的场景就不在本文中进一步解释了。
当Start-DscConfiguration开始后,你可能会控制面板看到关于配置进程的信息。如果一些顺利的话,在几分钟后你就会拥有一个全新的为VM而设的Hyper-V服务器了。
相关推荐
-
管理员常用Windows PowerShell命令Top25
即使Windows PowerShell已经由来已久,但很多管理员并不愿意主动熟悉PowerShell cmdlet命令行。随着微软扩展了PowerShell的功能,管理员应该对其功能及使用烂熟于心……
-
巧用PowerShell参数防止操作失误
使用PowerShell自动化操作可以帮助你节省大量的时间——或产生问题。幸运的是,巧用PowerShell参数可以防止发生更改脚本意外。
-
课堂:PowerShell期望状态配置基础学习
PowerShell DSC允许管理员定义和管理操作系统和应用程序的配置。这里我们介绍DSC的工作原理以及使用方法。
-
PowerShell 5升级指南
PowerShell 5版本是最新脚本语言,与之前的版本相比增加了许多新功能。管理人员可以通过几个步骤升级为最新的版本。