使用 DSC 配置 Windows Server
Contoso 的其他某个服务器管理员在 Windows PowerShell 方面具有丰富的经验,建议你研究使用 PowerShell DSC 来配置新部署的 Windows Server 计算机。 你了解到,使用 DSC 可以通过组合 PowerShell 脚本和操作系统功能来实现声明性配置管理。 你决定进一步研究。
注意
声明性编程语言将意向(要执行的操作)与执行方式(希望的实现方式)分离开。
什么是 DSC?
DSC 是一个基于 PowerShell 的管理平台,可用于管理服务器和相关的 IT 基础结构。 DSC 由三个组件组成,如下表中所述。
组件 | 说明 |
---|---|
配置 | 配置和定义资源的声明性 PowerShell 脚本。 运行配置时,DSC 将按定义应用配置。 这可确保目标资源(在本例中为服务器)处于定义的状态。 应用和维护这些配置的是本地配置管理器 (LCM)。 |
资源 | 包含用于定义和应用资源的所需配置状态的代码。 |
LCM | 是 DSC 用于应用配置的引擎。 LCM 会定期验证系统的状态,并在必要时对资源中的代码进行调用以重新应用所需的状态。 |
注意
Windows 中包含 PowerShell DSC,无需安装即可使用。
基于 Windows 的 DSC 很大程度上依赖于 LCM 组件。 此组件用作 Windows PowerShell DSC 脚本的执行引擎。
注意
LCM 是 Windows 操作系统当前所有受支持版本的组成部分。
LCM 负责:
- 协调 DSC 脚本中定义的设置的实现
- 监视这些设置的持续状态
- 更新计算机的状态,使其与所需状态匹配
每次 LCM 运行时,它都会完成以下步骤:
- 获取:检索计算机的当前状态。
- 测试:使用已编译的 DSC 脚本(.mof 文件)将计算机的当前状态与所需状态进行比较。
- 设置:更新计算机的配置,使其与 .mof 文件中所述的所需状态匹配。
你可在推送模式或拉取模式下部署 DSC 配置,如下表所述。
“模式” | 说明 |
---|---|
推送 | 在此模式下,将向一个或多个被管理的计算机手动发送或推送所需的配置。 LCM 组件可确保每个被管理的计算机上的状态与配置指定的状态相匹配。 |
请求 | 在此模式下,拉取服务器包含配置信息。 每个被管理的计算机上的 LCM 组件会定期(默认间隔为 15 分钟)轮询拉取服务器,以获取最新的配置详细信息。 然后,拉取服务器会将任何配置更改的详细信息发送回每个被管理的计算机。 |
提示
尽管可以将 Windows Server 安装为拉取服务器,但也可以使用 Azure 自动化 Desired State Configuration。
在 Windows 中使用 DSC 的要求
环境必须满足一些要求才能将 DSC 与 Windows 一起使用。 其中包括:
- 操作系统。 被管理的计算机必须运行 Windows 8.1 或更高版本,或者 Windows Server 2012 R2 或更高版本。
- Windows 远程管理。 必须在被管理的计算机上启用 Windows 远程管理 (WinRM)。
利用 DSC,可以定义以下两者的所需状态:
- 操作系统
- 应用程序
使用脚本
可以使用脚本来定义 DSC。 创建并编译配置后,可将其分配给将要接收该配置的计算机。
创建脚本
DSC 实现通常会先创建一个配置脚本 (.ps1) 来描述所需状态。 下面是一个简单的配置示例。 在此例中,该脚本会检查是否存在 Internet Information Services (IIS) 并在必要时安装它。
configuration IISInstall
{
# Import the required module.
Import-DscResource -ModuleName PsDesiredStateConfiguration
node "localhost"
{
WindowsFeature IIS
{
Ensure = "Present"
Name = "Web-Server"
}
}
}
创建脚本后,将其保存。 在本例中,将其保存为 IISInstall.ps1。
编译配置
创建配置脚本后,必须对其进行编译。 编译时会生成一个或多个 .mof 文件,这些文件中包含适用于目标节点的配置。 要编译脚本,请在 PowerShell 控制台中,找到保存配置(脚本文件)的文件夹,并运行以下命令将配置编译到 MOF 文件中:
.\IISInstall.ps1
IISInstall
应用配置
下一步是应用配置。 可以运行 Start-DscConfiguration
cmdlet 来执行此操作。
重要
要允许 DSC 运行,必须将 Windows 配置为使用 PowerShell 远程处理,即使在运行 localhost 配置时也是如此。
例如,在 PowerShell 控制台中,导航到保存配置的文件夹,并运行以下 PowerShell 命令:
Start-DscConfiguration .\IISInstall
提示
可以通过运行 Get-DscConfigurationStatus
cmdlet 来验证配置是否成功。