Azure 更新管理中心(预览版)-策略不起作用

Azure 更新管理中心(预览版)-策略不起作用

各位云用户,大家好,

我目前正在试用全新且出色的更新管理中心。作为不得不在 Azure 自动化帐户中摆弄更新管理的人,我很欣赏这项新服务。除了分配虚拟机来更新计划之外。

我做了什么:

创建了“维护配置”,其中包含更新计划和更新分类(全部)

维护配置

之后,我想根据标签自动分配特定范围内的机器。我们使用“UpdateWave”作为标签名称。因为我希望自动加入带有此标签的机器,所以我需要通过策略来执行此操作。Azure 将该过程称为“动态范围”(https://docs.microsoft.com/en-us/azure/update-center/scheduled-patching?tabs=schedule-updates-single-overview%2Cschedule-updates-scale-overview#dynamic-scoping)。

我为“[预览]:配置定期检查 Azure 虚拟机上缺少的系统更新”创建了一个策略分配,该策略分配将机器配置为自动检查更新。

定期检查策略分配是否有更新

当我检查合规性时,一段时间后我发现我的测试机器符合该政策。

定期检查合规性

第一个问题:但是当我查看更新管理中心时,定期评估并未启用。

已启用定期评估:否

有人知道这是怎么回事吗?同时,几个小时过去了,情况仍然一样。

第二个问题:

评估后,我当然希望将机器分配给一个时间表。这也必须通过策略来完成。为此,我将“[预览] 使用更新管理中心安排定期更新”策略分配给订阅,并且分配的部署成功。此分配基本上应将范围内订阅中的所有虚拟机分配给该计划(出于测试目的,我删除了所有过滤标签)。

计划策略Schedule policy

当我查看合规性时,我看不到任何虚拟机。似乎没有匹配的虚拟机。但范围订阅“eu2-iaaststu-sub”确实有我的 2 个 Windows 操作系统虚拟机。我创建了两次补救任务(启用了“补救前重新评估资源合规性”)并且它完成了。但它总是有 0 个受影响的资源。我不明白!

我是目标订阅的所有者。

我非常想使用这项服务。它让机器的上线变得容易得多。如果它能用就好了!

有人知道这两个错误的原因是什么吗?或者还有其他提示吗?

2022 年 11 月 7 日更新:Microsoft 修复了策略定义的大部分内容。这些策略现在支持支持更新管理的操作系统。自动修复功能现在仍不起作用。

[预览]:配置定期检查 Azure 虚拟机上缺少的系统更新:https://www.azadvertizer.net/azpolicyadvertizer/59efceea-0c96-497e-a4a1-4eb2290dac15.html?desc=compareJson&left=https%3A%2F%2Fwww.azadvertizer.net%2Fazpolicyadvertizerjson%2F59efceea-0c96-497e-a4a1-4eb2290dac15_2.0.0-preview.json&right=https%3A%2F%2Fwww.azadvertizer.net%2Fazpolicyadvertizerjson%2F59efceea-0c96-497e-a4a1-4eb2290dac15_3.0.0-preview.json

[预览]:使用更新管理中心安排定期更新:https://www.azadvertizer.net/azpolicyadvertizer/ba0df93e-e4ac-479a-aac2-134bbae39a1a.html?desc=compareJson&left=https%3A%2F%2Fwww.azadvertizer.net%2Fazpolicyadvertizerjson%2Fba0df93e-e4ac-479a-aac2-134bbae39a1a_1.0.0-preview.json&right=https%3A%2F%2Fwww.azadvertizer.net%2Fazpolicyadvertizerjson%2Fba0df93e-e4ac-479a-aac2-134bbae39a1a_2.0.0-preview.json

答案1

好的,经过很长一段时间我才知道这个问题。微软现在似乎对这些政策存在一些问题,或者至少它们没有反映文档中写的内容(截至 2022 年 9 月 6 日)。

在更新管理中心的文档中(https://docs.microsoft.com/en-us/azure/update-center/support-matrix?tabs=azurevm%2Cazurevm-os#supported-operating-systems) 支持以下 Windows 操作系统:

在此处输入图片描述

如果您查看策略定义(“[预览]:配置 Azure 虚拟机上缺少的系统更新的定期检查”),就会发现这些操作系统现在还不在选择范围内:

在此处输入图片描述

我所做的是在该列表中添加了其他几个 Windows 操作系统以供选择,并将策略定义保存为包含更多 VM SKU 的副本并将其分配给范围。之后,该策略按预期工作,所有 VM 都被策略选中并(大部分)按预期工作。

我希望这个问题能够在更新管理中心正式发布之前得到解决。

答案2

关于问题 1

  • 我在这方面取得了一些进展,但仍然没有 100% 成功。我相信你已经发现,网上没有太多帮助。

    首先,您需要根据订阅注册预览更新管理功能。

    Register-AzProviderFeature -FeatureName InGuestAutoPatchVMPreview  - ProviderNamespace Microsoft.Compute
    Register-AzProviderFeature -FeatureName InGuestAutoAssessmentVMPreview -ProviderNamespace Microsoft.Compute
    Register-AzProviderFeature -FeatureName InGuestScheduledPatchVMPreview  -ProviderNamespace Microsoft.Compute
    

    然后,对于每个预览策略,您需要更新发布者、优惠和 SKUhttps://docs.microsoft.com/en-us/azure/update-center/support-matrix?tabs=azurevm%2Cazurevm-os#supported-operating-systems. 政策如下

    [Preview]: Configure periodic checking for missing system updates on azure virtual machines
    [Preview]: Machines should be configured to periodically check for missing system updates
    [Preview]: Schedule recurring updates using Update Management Center
    

    当创建新的虚拟机并针对新资源运行策略评估时,您最终应该会看到新更新管理门户中的“补丁编排”和“定期评估”字段已更新以反映您的策略。尽管它似乎与 Windows 虚拟机比 Linux 更一致。

关于问题 2

  • 政策[Preview]: Schedule recurring updates using Update Management Center应该将更改为PatchModeAzure Orchestrated (AutomaticByPlatform),但整个策略不适用于新创建的资源;它不会将新创建的 VM 分配给维护配置,也不会patchMode按照策略描述中所述将策略更新为 AutomaticByPlatform。
  • 如您所见,您应该能够手动将虚拟机添加到维护配置中,但要做到这一点,您需要先将patchMode虚拟机设置为 AutomaticByPlatform - 因此您需要使用策略来设置它
  • 最后,手动修复[Preview]: Schedule recurring updates using Update Management Center策略似乎确实有效,尽管它不一致,并且资源的合规性信息之后仍然显示不合规。

因此,仍然值得使用上述三种策略,因为它们确实有用。对于我们来说,我们可能只会自动运行脚本来查找没有维护配置分配的虚拟机,然后手动分配它。

最后

  • 通过 Azure 门户检查更新管理设置的状态时要小心。这可能是一个缓存问题,但通常它不会显示正确的结果。通过 powershell 检查结果会更快(请原谅我的初级 powershell 能力)。

    你可以使用以下命令获取虚拟机的 patchMode

    (get-azvm)[0].OSProfile.LinuxConfiguration.patchsettings.AssessmentMode或者

    (get-azvm)[0].OSProfile.WindowsConfiguration.patchsettings.AssessmentMode

    或者

    $allVMs = get-azvm
    foreach ($aVM in $allVMs) {
        if($aVM.OSProfile.LinuxConfiguration.patchsettings.AssessmentMode) 
    {$patchsettings = $aVM.OSProfile.LinuxConfiguration.patchsettings.AssessmentMode}
        if($aVM.OSProfile.WindowsConfiguration.patchsettings.AssessmentMode) 
    {$patchsettings = $aVM.OSProfile.WindowsConfiguration.patchsettings.AssessmentMode}
        write-host $aVM.name.PadRight(31,' ') " / " $patchsettings.PadRight(28,' ') " / " $aVM.StorageProfile.ImageReference.Publisher.PadRight(22,' ') " / " $aVM.StorageProfile.ImageReference.Offer.PadRight(28,' ') " / " $aVM.StorageProfile.ImageReference.SKU
    

}

答案3

我还发现这个 UMS 预览版存在一些奇怪的问题:

  1. 即使从维护配置计划中删除,ARC 服务器仍会接收更新。必须删除维护配置才能阻止它们接收更新。

  2. 当计划中包含偏移时,不会触发更新。

还有谁见过类似的行为?

相关内容