认识PowerShell期望状态配置

日期: 2015-04-22 作者:Jonathan Hassell翻译:黄小明 来源:TechTarget中国 英文

PowerShell期望状态配置(DSC)是2013年下半年发布的Windows  8.1和Windows Server 2012 R2最终版本中默认自带的一个功能。它是一个基于标准Web服务的配置管理系统,允许你按照自己的方式对机器进行配置。本文中,我将介绍什么是PowerShell DSC,并将展示它是如何工作的,以及它可以完成怎样的任务,达到怎样的目标。 但首先,许多管理员第一次听说这个工具时就想了解关于它的一些背景和问题:在试验或真实系统管理解决方案如System Center或者其他第三方工具上使用PowerShell期望状态配置的意义是什么?其有很多优势,但是其中有三点是……

我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。

我原创,你原创,我们的内容世界才会更加精彩!

【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

电子邮件地址不会被公开。 必填项已用*标注

敬请读者发表评论,本站保留删除与本文无关和不雅评论的权力。

PowerShell期望状态配置(DSC)是2013年下半年发布的Windows  8.1和Windows Server 2012 R2最终版本中默认自带的一个功能。它是一个基于标准Web服务的配置管理系统,允许你按照自己的方式对机器进行配置。本文中,我将介绍什么是PowerShell DSC,并将展示它是如何工作的,以及它可以完成怎样的任务,达到怎样的目标。

但首先,许多管理员第一次听说这个工具时就想了解关于它的一些背景和问题:在试验或真实系统管理解决方案如System Center或者其他第三方工具上使用PowerShell期望状态配置的意义是什么?其有很多优势,但是其中有三点是最为突出的。

PowerShell期望状态配置内置于Windows Server,所以它没有购买许可和系统管理、配置部署软件管理实例的额外开支。

PowerShell期望状态配置几乎不需要代理,需求只是安装好PowerShell,并且可以通过80或者443端口查询Web服务器来抓取配置信息,这里不需要额外的配置系统管理开销。

PowerShell期望状态配置看起来只是配置文件定义的功能。它忽略其他设置,使配置负载更加轻巧和加速其他部署,这样它就可以定义多个配置和堆叠工作负载(一台Web服务器也充当文件服务器,并且可以获取没有文件服务器设置覆盖的Web服务器的设置),这类部署是许多系统管理套件无法很容易地应付,甚至完全不能处理。

Push模式和Pull模式的配置


PowerShell DSC的基本原则是使用定义所需配置的两种模式,这样管理员既可以自定义地有间隔地使机器从中央存储库获取正确配置信息,也可以将这类信息推送回去。 

Push模式是一个主动的配置模式运行方式,当你发出“Start-DscConfiguration –Computername –Path”的PowerShell命令并且键入的命令带有“-Path”的属性时,就会立即触发存在任何位置的基于文件存储的系统配置推送出去。这几乎是一种即时执行“现在就做”的方式来管理你放在中央存储位置的所有配置文件目标和需求,这些文件可以让你计划的目标机器去访问。这个需要你设置经常去触发推动,并且默认配置不会自己检测。

Pull模式有一点点被动;它需要一台服务器同时为配置文件和其它为计算机各方面配置充当中介角色的构件提供清算服务。举个例子,在你编写一个自定义服务提供程序——可以提供使用PowerShell DSC的一段代码——它可以转换本地自定义业务应用程序的配置文件中的指令。Pull服务器只是一台运行IIS的服务器,而IIS可以发布OData。OData是一种典型、明确定义以及标准支持的界面,通过这个界面PowerShell的Web 服务器可以获取到真正的配置数据。因此,Pull模式是实施PowerShell DSC最常用的方式,也可以用来部署当配置远离期望状态并且超时的情况。PowerShell DSC定期运行,下发正确的配置,执行静默的进程来更改配置为期望状态。

以上的这些配置定义都集成在管理对象文件或者MOF 文件,基本上都是一些文本文件,像一系列的classes,或者是一些PowerShell 配置引擎可以读懂的与Windows操作系统有关的一些元素,抑或是一些可以定义期望配置的classes参数。这里提供一些.MOF配置行文件的参考:

instance of PowerPlan as $PP
{
ResourceID = "[PowerPlan] Default::[BaseServer]JustTheBasics::[VirtualServer]VMWare";
 SourceInfo = "C:\windows\system32\WindowsPowerShell\v1.0\Modules\SELocalConfiguration\StackExchangeConfiguration\StackExchangeConfiguration.psm1::20::5::PowerPlan";
 Name = "High performance";
 ModuleName = "PowerPlan";
 ModuleVersion = "1.0";
};

MOF文件通常是手动建立一次,然后根据需求进行复制和粘贴。对于检测这个配置涉及的安装、移除或者确保某些Windows角色和功能是否已经存在,你可以使用内置命令Get-DscResource来检测。这个命令会根据你所以给出的角色或者功能名称,抓取出它们的正确使用语法和其他可用选项。例如,如运行上面的命令,就会显示PowerShell期望状态配置可以操作的“区域”配置类型,你可以在每个区域里面执行这一类的任务和任务指令。

Name             Properties
----             ----------
File             {DestinationPath, Attributes, Checksum, Con...
Archive          {Destination, Path, Checksum, Credential...}
Environment      {Name, DependsOn, Ensure, Path...}
Group            {GroupName, Credential, DependsOn, Descript...
Log              {Message, DependsOn}
Package          {Name, Path, ProductId, Arguments...} 
Registry         {Key, ValueName, DependsOn, Ensure...}
Script           {GetScript, SetScript, TestScript, Credenti...
Service          {Name, BuiltInAccount, Credential, DependsO...
User             {UserName, DependsOn, Description, Disabled...
WindowsFeature   {Name, Credential, DependsOn, Ensure...} 
WindowsProcess   {Arguments, Path, Credential, DependsOn...}

正如你所看到的,这里有关于操作系统各方面的属性,从角色和功能到脚本、注册设置、认证,你都可以使用DSC来做控制。

这些都是PowerShell期望状态配置的基本要素。获取更多信息,查询PowerShell.org,特别是有标记的DSC资源。

作者

Jonathan Hassell
Jonathan Hassell

Jonathan Hassell是一名作家、顾问、演说家。

相关推荐