使用 DSC 配置 Windows Server
Contoso 的其他服务器管理员之一使用 Windows PowerShell,并建议你使用 PowerShell DSC 来配置新部署的 Windows Server 计算机。 你了解到,使用 DSC(期望状态配置)时,可以通过 PowerShell 脚本和操作系统功能的组合来实现声明式配置管理。 你决定进一步调查。
注释
声明性编程语言将意向(要执行的操作)与执行方式(希望的实现方式)分离开。
什么是 DSC?
DSC 是基于 PowerShell 的管理平台,可用于管理服务器和相关 IT 基础结构。 DSC 由下表中所述的三个组件组成。
组件 | DESCRIPTION |
---|---|
配置 | 用于配置和定义资源的声明性 PowerShell 脚本。 配置运行时,DSC 会应用定义的配置。 这可确保目标资源(在本例中为服务器)处于定义状态。 它是应用和维护这些配置的本地配置管理器(LCM)。 |
资源 | 包含定义并应用资源所需配置状态的代码。 |
LCM | 是 DSC 用于应用配置的引擎。 LCM 会定期验证系统的状态,并在必要时调用资源中的代码以重新应用所需状态。 |
注释
无需安装任何内容即可使用 DSC;PowerShell DSC 包含在 Windows 中。
基于 Windows 的 DSC 广泛依赖于 LCM 组件。 此组件用作 Windows PowerShell DSC 脚本的执行引擎。
注释
LCM 是当前所有受支持的 Windows作系统版本不可或缺的一部分。
LCM 负责:
- 协调 DSC 脚本中定义的设置的实现
- 监视这些设置的持续状态
- 更新计算机的状态以匹配所需状态
每次 LCM 运行时,它都会完成以下步骤:
- 获取:检索计算机的当前状态。
- 测试:使用已编译的 DSC 脚本(.mof 文件)将计算机的当前状态与所需状态进行比较。
- 设置:更新计算机的配置,以匹配 .mof 文件中所述的所需状态。
你可在推送模式或拉取模式下部署 DSC 配置,如下表所述。
模式 | DESCRIPTION |
---|---|
推送 | 在此模式下,将向一个或多个被管理的计算机手动发送或推送所需的配置。 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 来验证配置是否成功。