挨踢茶馆

  • 首页
  • AWS
  • 网络技术
    • 思科语音
    • 路由交换
  • 给我留言
  • 关于我
挨踢茶馆
专注于网络技术、云计算的技术博客
  1. 首页
  2. 操作系统
  3. 正文

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

2015 年 11 月 20 日 8037点热度 0人点赞 0条评论

  精通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

标签: hyper-v PowerShell Desired State Configuration (DSC) VMware
最后更新:2015 年 11 月 20 日

挨踢小茶

网络工程师/云计算架构师/云步道师/摄影爱好者

点赞
< 上一篇
下一篇 >

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

挨踢小茶

网络工程师/云计算架构师/云步道师/摄影爱好者

最新 热点 随机
最新 热点 随机
Web3 Social 2023 @深圳 AIGC Prompt 的艺术和模型调优 UWA Day 2022 - 如何通过云计算构架高性能、高可靠、智能化的游戏 一文看懂 Amazon EKS 中的网络规划 利用 Direct Connect Gateway 和 Transit Gateway 打造跨国企业网络环境 SD-WAN 和专线混合组网中的高可用设计 为了加速Wordpress网站我踩过了哪些坑?含泪告诉你 利用 SD-WAN 和专线混合组网,加速境内外企业 IDC 和多云数据中心 运行7年之后博客更新主题 立业不读架构书,阅尽诗书也枉然
2011年10月中国微博网站用户时段分布情况 GNS3上模拟HSRP时出现的BUG 袖珍网络服务器Tftpd32 v4.00 使用树莓派(Raspberry Pi)实现智能家居(1/4) 概念性透明移动搜索设备 Cisco ACS 5.2安装 黑客爆CSDN数据库,600万用户资料外泄 如何在Windows 7上取消IPv6 终端仿真器:SecureCRT 6.7.3 绿色版 利用X-Modem恢复思科交换机IOS
链接表
  • FROYO's Blog
  • Pop's blog
  • TC的博客
  • 今天毕业
  • 挨踢茶馆在线教程
  • 月与灯依旧
  • 月小升博客
  • 泪雪博客
  • 海纳百川
  • 筑楼
  • 网络茶馆
  • 蓝卡
  • 郑晓个人博客
  • 陆鉴鑫的博客

COPYRIGHT © 2012-2023

Theme Kratos Made By Seaton Jiang

粤ICP备12007665号-1