你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

计划从 Desired State Configuration 扩展更改到 Azure 机器配置

机器配置是 Azure 中虚拟机的 PowerShell Desired State Configuration (DSC) 扩展提供的最新功能实现。 如果可能,应计划将内容和计算机移动到新服务。 本文提供有关制定迁移策略的指导。

计算机配置中的新功能:

  • 通过 Azure Resource Graph 进行高级报告(包括资源 ID 和状态)
  • 管理相同计算机的多个配置
  • 当计算机偏离所需状态时,可控制进行修正的时间

开始之前,最好参阅 Azure Policy 计算机配置页中的概念性概述信息。

检查是否正在使用所需的状态配置扩展

若要验证是否在虚拟机上使用所需的状态配置扩展,请在 Azure 门户中打开“虚拟机”,选择每个虚拟机的名称,然后在目录中选择“设置”,最后选择“扩展 + 应用程序”。 你将在那里看到分配的扩展列表。

以下查询将返回 Azure 中附加了 DSC 扩展(for Windows)的虚拟机列表。

resources
| where type == 'microsoft.compute/virtualmachines'
| extend
    JoinID = toupper(id),
    OSName = tostring(properties.osProfile.computerName),
    OSType = tostring(properties.storageProfile.osDisk.osType)
| join kind=inner(
    resources
    | where type == 'microsoft.compute/virtualmachines/extensions'
    | extend 
        VMId = toupper(substring(id, 0, indexof(id, '/extensions'))),
        ExtensionName = tolower(name)
    | where ExtensionName == 'microsoft.powershell.dsc'
) on $left.JoinID == $right.VMId
| project OSName, OSType, ExtensionName, ['id']
| order by tolower(OSName) asc

主要差异

机器配置使用 DSC 版本 2. DSC 扩展使用 DSC 版本 1。 实现是独立的。 但是没有冲突检测。 不建议使用这两个平台管理相同的配置。

以“推送”模式通过适用于 DSC 扩展部署配置,其中操作异步完成。 配置在虚拟机内完成运行之后,部署才会返回。 部署后,不会向资源管理器返回更多信息。 在计算机中管理监视和偏移。

计算机配置采用“拉取”模式处理配置。 将扩展部署到虚拟机,然后根据机器配置分配详细信息执行作业。 在计算机内应用配置时,无法实时查看状态。 应用配置后,可以从 Azure 资源管理器监视和更正偏移。

DSC 扩展包含 privateSettings,可以在其中将密码或共享密钥等机密传递给配置。 计算机配置尚未实现机密管理。

机器配置在 PowerShell 版本 7.2 中运行,而 DSC 扩展在 Windows PowerShell 5.1 中运行。 虽然由于隐式远程处理大多数资源预期可正常工作,但最好先测试现有资源,然后再使用。

由于 DSC 扩展管理 Windows 中的本地 Configuration Manager 服务,因此可以在该扩展的属性中设置能否重启的控制权限。 在迁移到机器配置的过程中,需要使用 Azure 资源管理器管理重启。

DSC 扩展使用的 zip 文件项目与 Azure 机器配置不兼容。 计划使用计算机配置 PowerShell cmdlet 重新打包配置和所需的 PowerShell 模块,并重新发布到 Azure 存储。

了解迁移

迁移的最佳方法是首先重新创建、测试和重新部署内容,然后将新解决方案用于新计算机。

以下是迁移的预期步骤:

  1. 下载并展开用于 DSC 扩展的 .zip 包。
  2. 检查 DSC 配置文件以了解方案。
  3. 对配置进行任何所需的更改。
  4. 使用计算机配置 PowerShell cmdlet 创建、测试和发布新包。
  5. 使用计算机配置进行未来部署(而非 DSC 扩展)。

考虑分解复杂的配置文件

计算机配置可以为每台计算机管理多个配置。 许多为 DSC 扩展编写的配置都假定在每台计算机上只能管理单个配置。 若要利用计算机配置提供的扩展功能,可以将大型配置文件划分为许多较小的配置,其中每个配置处理特定方案。

计算机配置中没有任何业务流程来控制配置的排序方式。 如果必须按顺序执行配置中的步骤,请将它们保留在一个包中。

在 Azure 计算机配置中测试内容

阅读 如何创建自定义的计算机配置包项目 页面,从而评估 DSC 扩展中的内容是否可以与计算机配置结合使用。

执行到创作配置步骤时,请使用 DSC 扩展包中的 MOF 文件作为创建新 MOF 文件和自定义 DSC 资源的基础。 $env:PSModulePath 中必须提供自定义 PowerShell 模块,然后才能创建计算机配置包。

更新部署模板

如果部署模板包含 DSC 扩展(请参阅示例),则需要更改两项内容。

首先,将 DSC 扩展替换为计算机配置功能的扩展

然后,添加计算机配置分配,将新的配置包(和哈希值)与计算机关联。

需要将 Reasons 属性添加到自定义资源吗?

从 Azure 门户查看配置分配的结果时,实现 Reasons 属性 可提供更好的体验。 如果模块中的 Get 方法不包含 Reasons,会返回泛型输出,以及 Get 方法返回的属性的详细信息。 因此,这是迁移时的可选操作。

删除 DSC 扩展分配的配置

在之前的 DSC 版本中,DSC 扩展通过 Local Configuration Manager (LCM)分配了配置。 建议删除 DSC 扩展并重置 LCM。

重要

删除本地 Configuration Manager 中的配置不会“回滚”由该配置设置的内容。 删除配置只会导致 LCM 停止管理已分配的配置。 设置内容仍将保持不变。

使用 Remove-DscConfigurationDocument 中所述的 命令

后续步骤