使用自动部署策略锁定配置变更

日期: 2014-04-29 作者:Jason Helmick翻译:张冀川 来源:TechTarget中国 英文

无论是本地还是云中,服务器管理都面临重重困难。管理员需要部署应用,并对其进行监控,以查看是否有人增加或者移除了某些软件或者做了错误的配置。部署时脚本能够提供一些帮助,但是监控变更并避免配置出错完全是另一回事儿了。如果你具备Linux/Unix背景,那么你应该熟悉自动化及配置管理产品Puppet和 Chef。

这些配置工具使配置管理及自动化部署更简单。 但如果你是一名Windows服务器IT管理员呢?尽管Puppet和Chef也能够用于Windows平台,但毕竟属于外来产品。微软在Windows系统内提供了相同的技术,并称之为期望的状态配置(DSC),安装完PowerShell v4即可使用。 了……

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

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

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

微信公众号

TechTarget微信公众号二维码

TechTarget

官方微博

TechTarget中国官方微博二维码

TechTarget中国

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

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

无论是本地还是云中,服务器管理都面临重重困难。管理员需要部署应用,并对其进行监控,以查看是否有人增加或者移除了某些软件或者做了错误的配置。部署时脚本能够提供一些帮助,但是监控变更并避免配置出错完全是另一回事儿了。如果你具备Linux/Unix背景,那么你应该熟悉自动化及配置管理产品Puppet和 Chef。这些配置工具使配置管理及自动化部署更简单。

但如果你是一名Windows服务器IT管理员呢?尽管Puppet和Chef也能够用于Windows平台,但毕竟属于外来产品。微软在Windows系统内提供了相同的技术,并称之为期望的状态配置(DSC),安装完PowerShell v4即可使用。

了解配置管理概念并使用诸如DSC这样的技术逐步构建用户体验是件难事,不只是读这篇文章,还要亲自动手实验。

体验DSC需要什么

为了使用DSC,需要在Windows Server 2012 R2中部署两台虚拟机。虚拟机的IP地址需要配置在同一个网络中。不需要配置域,确保彼此能够ping通即可。而且不需要安装任何角色,在DSC中完成上述配置即可。

也可以使用旧版本的Windows服务器,但需要在服务器上安装PowerShell v4并启用PowerShell Remoting。Windows Server 2012 R2在默认情况下启用了PowerShell Remoting。如果你想节省时间,可以从微软网站下载Windows Server 2012 R2的评估版。

解决业务问题

示例问题很简单,但的确是个实际问题。我需要为服务器配置IIS。在本例中,我们想对ASP.NET 4.5以及IIS管理控制台提供支持。让我们先来制作第一个DSC脚本。

在示例中使用的虚拟机的计算机名是DC和SI。DC是编写并执行脚本的服务器,S1是想要搭建的新Web服务器。

在DC服务器上,打开PowerShell ISE创建一个名为Install_IIS.ps1的新脚本并将其保存到一个目录中,比如C:scripts。在该脚本中创建一个和函数非常类似的代码,使用的关键词是“configuration”。和函数类似,需要为配置起一个名字“Install_IIS”。

Configuration Install_IIS {

          }

你需要运行该脚本、执行配置。如果运行过包含函数的PowerShell脚本,应该知道当脚本存在时函数将会从内存中移除,因此我想更改脚本,在大括号后增加一行:

Configuration Install_IIS {

          }

Install_IIS

配置文件至少要有一个节点。可以把节点看作一台计算机或者计算机的集合,DSC遵从标准,这意味着节点可以是任意的,包括网络交换机。

在示例中,我增加了一个计算机节点S1。

Configuration Install_IIS {

     Node s1 {

     }

Install_IIS

在节点内,指定你想要的配置。示例配置非常简单,我想安装三个Windows角色:Web服务器、Web管理控制台以及Web ASP.Net4.5,对应的名字依次是Web-Server、Web-Mgmt-Console、Web-Asp-Net45。

打开PowerShell 命令提示并输入如下命令:PS> Get-WindowsFeature *web*

在节点内,我会增加一个称为资源的元素。正在使用的资源是名为WindowsFeature的内置资源,能够在内部增加角色。看起来和函数很类似,也需要一个名字。在WindowsFeature内我指定了角色名,但这不是必须的。

Configuration Install_IIS {

     Node s1 {

              WindowsFeature IIS {

                    Ensure = 'Present'

                    Name = 'web-server'

               }


          WindowsFeature IIS-Console {

                    Ensure = 'Present'

                    Name = 'web-Mgmt-Console'

          }

          WindowsFeature ASPNET45 {

          Ensure = 'Present'

          Name = 'Web-Asp-Net45'

     }

     }

}

Install_IIS

将脚本保存到目录中,然后运行该脚本。你会注意到将创建一个名为Install_IIS的新目录。如果进入目录内将会看到脚本创建了一个名为S1.MOF的文件。这是DSC魔力的一部分,但我们将会把该管理对象格式(MOF)文件发送到S1服务器。S1服务器有一个专门的组件(包含在PowerShell v4中)称之为本地配置管理器(LCM),LCM使用MOF文件对服务器进行配置。

在DC计算机下打开PowerShell控制台并输入如下命令发送MOF:

PS> Start-DscConfiguration -Path C:scriptsInstall_IIS

-Path参数应该指向脚本中的目录。在执行上述命令时,会启动PowerShell后台任务。可以使用Get-Job命令查看正在运行的任务并等待其执行结束。

进入目标计算机(S1),打开PowerShell命令提示符,运行Get-Windowsfeature *web*命令,将会注意到已经按照你的要求配置了一台Web服务器。

在受到诱惑并尝试在生产环境中试用该产品时,请注意对你来说使用所谓的“推送”配置模式非常简单。推送不一定是最佳方式,但用于测试非常棒。在今后的文章中,我将会介绍如何配置并使用“拉”模式。使用该模式,DSC每15分钟会对配置进行检查并确认,这意味着如果某些人对配置进行了调整,上述配置将会被移除掉。

翻译

张冀川
张冀川

TechTarget中国特约专家,任职于某国企信息中心,负责数据中心硬件基础设施及信息系统运维管理工作,对虚拟化及云计算技术有浓厚兴趣,并在工作中积极应用

相关推荐