[译]使用PowerShell DSC来构建Hyper-V主机

  精通PowerShell的管理员可以简化制作Hyper-V主机的这个过程。

  Hyper-V在市场份额上要比VMware要落后,但微软在慢慢地追赶。企业喜欢微软的价格优势——有的时候甚至是免费的——以及其不断增加的平台特性。这些好处会加速管理员去部署更多数量的Hyper-V主机。

MicrosoftHyper-V-Logo

  我们可以使用自动化方法在一台运行Windows Server 2012 R2的服务器上配置Hyper-V主机,从而使这个过程可重复化。本文会解释如何使用Windows PowerShell,特别是PowerShell Desired State Configuration (DSC)来实施上述的部署。

  那么在一个已存在的Windows服务器上部署一个Hyper-V主机需要什么呢?对于我们的目的来说,需要三样东西:几个Windows的功能,一个存储VMs的目录和一个将VMs连接到网络中的交换机。

搭建框架

  在开始任何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 Files\WindowsPowerShell\Modules这个目录下,它就可以被所有以后创建的脚本引用了。

  敲入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’

}}

  下一步,创建VMs之前我们需要一个目录,我们需要确保其中一个是C:\VMs。这里需要用到File资源来创建目录,这个File资源有一个称之为Type的属性,这个属性可以定义一个文件或者目录。

File VMsDirectory {

Ensure = ‘Present’

Type = ‘Directory’

DestinationPath = “$($env:SystemDrive)\VMs”

}

  最后一个特性,我们使用xHyper-V模块内的一个称之为xVMSwitch的资源来创建和配置Hyper-V交换机。将Type置为Internal来创建一个VMs无法向主机外部通信的网络。

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开始后,你可能会控制面板看到关于配置进程的信息。如果一些顺利的话,在几分钟后你就会拥有一个全新的为VMs而设的Hyper-V服务器了。

原文地址:http://searchwindowsserver.techtarget.com/tip/Using-PowerShell-DSC-to-construct-a-Hyper-V-host



 
 » 除非注明,本博客文章均为挨踢小茶原创,转载请以链接形式标明本文地址
该日志由 挨踢小茶 于2015年11月20日发表在 操作系统, 虚拟机技术, 译文 分类下, 你可以发表评论,并在保留原文地址及作者的情况下引用到你的网站或博客。
原创文章转载请注明: [译]使用PowerShell DSC来构建Hyper-V主机 | 挨踢茶馆
关键字: , ,

[译]使用PowerShell DSC来构建Hyper-V主机:等您坐沙发呢!

发表评论



快捷键:Ctrl+Enter

无觅相关文章插件,快速提升流量