使用自动化 Runbook 脚本进行迁移

适用于:✔️ Windows VM ✔️ Linux VM ✔️ 本地环境 ✔️ 已启用 Azure Arc 的服务器

本文详细介绍如何使用迁移 Runbook 将所有工作负载(计算机和计划)从自动化更新管理自动迁移到 Azure 更新管理器。

以下部分详细介绍如何运行脚本、脚本在后端执行的操作、预期行为以及任何限制(如果适用)。 该脚本可以一次性迁移一个自动化帐户中的所有计算机和计划。 如果有多个自动化帐户,则必须为所有自动化帐户运行 runbook。

概括而言,需要执行以下步骤,将计算机和计划从自动化更新管理迁移到 Azure 更新管理器。

不支持的方案

  • 不会迁移非 Azure 保存的搜索查询;必须手动迁移这些内容。

有关限制和注意事项的完整列表,请参阅迁移要点

分步指南

下面详细介绍上述每个步骤中提到的信息。

先决条件 1:将非 Azure 计算机加入 Arc

如何操作

迁移自动化 runbook 会忽略未加入 Arc 的资源。因此,在运行迁移 runbook 之前,必须先将所有非 Azure 计算机加入 Azure Arc。 按照步骤将计算机加入 Azure Arc

先决条件 2:通过运行 PowerShell 脚本创建用户标识和角色分配

A. 运行脚本的先决条件

  • 在 PowerShell 中 Install-Module -Name Az -Repository PSGallery -Force 运行命令。 先决条件脚本取决于 Az.Modules。 如果 Az.Modules 不存在或已更新,则需要执行此步骤。
  • 若要运行此先决条件脚本,必须对包含自动化更新管理资源(如计算机、计划、日志分析工作区和自动化帐户)的所有订阅拥有 Microsoft.Authorization/roleAssignments/write 权限。 请参阅如何分配 Azure 角色
  • 你必须具有更新管理权限

显示命令如何安装模块的屏幕截图。

B. 运行脚本

在本地下载并运行 PowerShell 脚本 MigrationPrerequisiteScript。 此脚本采用要迁移的自动化帐户的 AutomationAccountResourceId,并将 AutomationAccountAzureEnvironment 作为输入。 AutomationAccountAzureEnvironment 的接受值为 AzureChina,表示自动化帐户所属的云。

显示如何下载和运行脚本的屏幕截图。

可以通过自动化帐户>属性来提取 AutomationAccountResourceId。

显示如何提取资源 ID 的屏幕截图。

°C 验证

运行脚本后,验证是否已在自动化帐户中创建用户托管标识。 自动化帐户>标识>用户分配

显示如何验证是否已创建用户托管标识的屏幕截图。

D. 脚本的后端操作

  • 更新自动化帐户的 Az.Modules,这是运行迁移和卸载脚本所必需的操作。

  • 创建名为 AutomationAccountAzureEnvironment 的自动化变量,它用于存储自动化帐户所属的 Azure 云环境。

  • 在与自动化帐户相同的订阅和资源组中创建用户标识。 用户标识的名称类似于 AutomationAccount_aummig_umsi

  • 将用户标识附加到自动化帐户。

  • 脚本将以下权限分配给用户托管标识:需要更新管理权限

    1. 为此,脚本会提取在此自动化帐户下加入自动化更新管理的所有计算机,并分析其订阅 ID,以便将所需的 RBAC 提供给用户标识。
    2. 脚本为自动化帐户所属的订阅上的用户标识提供适当的 RBAC,以便可以在此处创建 MRP 配置。
    3. 脚本会为 Log Analytics 工作区和解决方案分配所需的角色。
  • 注册 Microsoft.Maintenance 和 Microsoft.EventGrid 资源提供程序所需的订阅。

步骤 1:迁移计算机和计划

此步骤涉及使用自动化 runbook 将所有计算机和计划从自动化帐户迁移到 Azure 更新管理器。

请按照这些步骤进行操作

  1. 从 runbook 库导入迁移 runbook 并发布。 从浏览库搜索 azure 自动化更新,导入名为“从 Azure 自动化更新管理迁移到 Azure 更新管理器”的迁移 runbook 并发布该 runbook。

    显示如何从自动化更新管理迁移的屏幕截图。

    Runbook 支持 PowerShell 5.1。

    显示导入时 Runbook 支持 PowerShell 5.1 的屏幕截图。

  2. 将 runbook 的详细日志记录设置为 True。

    显示如何设置详细日志记录的屏幕截图。

  3. 运行 runbook 并传递所需的参数,例如 AutomationAccountResourceId、UserManagedServiceIdentityClientId 等。

    显示如何运行 Runbook 并传递所需参数的屏幕截图。

    1. 可以从自动化帐户>属性提取 AutomationAccountResourceId。

      显示如何提取自动化帐户资源 ID 的屏幕截图。

    2. 可以从自动化帐户>标识>用户分配>标识>属性>客户端 ID提取 UserManagedServiceIdentityClientId。

      显示如何提取客户端 ID 的屏幕截图。

    3. 将 EnablePeriodicAssessmentForMachinesOnboardedToUpdateManagement 设置为 TRUE 将在加入自动化更新管理的所有计算机上启用定期评估属性。

    4. MigrateUpdateSchedulesAndEnablePeriodicAssessmentonLinkedMachines 设置为 TRUE会将自动化更新管理中的所有更新计划迁移到 Azure 更新管理器,同时在链接到这些计划的所有计算机上将定期评估属性设为 True

    5. 需要指定 ResourceGroupForMaintenanceConfigurations,其中将创建 Azure 更新管理器中的所有维护配置。 如果提供新名称,则会创建资源组,其中将创建所有维护配置。 但是,如果提供资源组已存在的名称,则会在现有资源组中创建所有维护配置。

  4. 检查 Azure Runbook 日志,了解 SUC 的执行状态和迁移状态。

    显示 Runbook 日志的屏幕截图。

后端的 Runbook 操作

Runbook 的迁移执行以下任务:

  • 在所有计算机上启用定期评估。
  • 自动化帐户中的所有计划都将迁移到 Azure 更新管理器,并为每个计划创建相应的维护配置,每个计划都具有相同的属性。

关于脚本

下面是迁移脚本的行为:

  • 检查使用输入的名称的资源组是否已存在于自动化帐户订阅中。 如果没有,请使用客户指定的名称创建资源组。 此资源组将用于为 V2 创建 MRP 配置。

  • RebootOnly 设置在 Azure 更新管理器中不可用。 不会迁移具有 RebootOnly 设置的计划。

  • 筛选掉处于错误/已过期/提供失败/禁用状态的 SUC,并将其标记为“未迁移”,然后输出指示不会迁移此类 SUC 的相应日志。

  • 配置分配名称是一个字符串,格式为 AUMMig_AAName_SUCName

  • 了解此动态作用域是否已通过检查 Azure Resource Graph 分配给维护配置。 如果未分配,则仅以 AUMMig_ AAName_SUCName_SomeGUID格式分配名称。

  • 对于配置了预/后任务的计划,脚本将为预/后任务中的 Runbook 创建自动化 Webhook,并为预/后维护事件创建事件网格订阅。 有关详细信息,请参阅 Azure 更新管理器中的预/后工作原理

  • 汇总的一组日志将输出到输出流,以便提供计算机和 SUC 的总体状态。

  • 详细日志将输出到详细流。

  • 迁移后,软件更新配置可以具有以下四种迁移状态中的任何一种:

    • 迁移失败
    • 部分迁移
    • 未迁移
    • 已迁移

下表显示了与每个迁移状态关联的方案。

迁移失败 部分迁移 未迁移 已迁移
未能为软件更新配置创建维护配置。 未应用补丁设置的计算机数非零。 由于某些客户端/服务器错误(例如内部服务错误),无法从 API 获取软件更新配置。
配置分配失败的计算机数非零。 软件更新配置的重新启动设置为仅重启。 Azure 更新管理器目前不支持此功能。
无法解析未能对 Azure Resource Graph 执行查询的动态查询数非零。
动态范围配置分配失败数非零。 软件更新配置在 DB 中没有成功的预配状态。
软件更新配置具有保存的搜索查询。 软件更新配置在 DB 中处于错误状态。
软件更新配置具有尚未成功迁移的预/后任务。 与软件更新配置关联的计划在迁移时已过期。
已禁用与软件更新配置关联的计划。
迁移软件更新配置时未经处理的异常。 未应用补丁设置的计算机为零。



配置分配失败的计算机为零。



无法解析未能对 Azure Resource Graph 执行查询的动态查询为零。



动态范围配置分配失败为零。



软件更新配置保存的搜索查询为零。

若要从上表中找出哪些方案对应于软件更新配置具有特定状态的原因,请查看详细/失败/警告日志以获取错误代码和错误消息。

还可以使用更新计划的名称进行搜索,以获取其特定日志进行调试。

显示如何查看特定于调试的日志的屏幕截图。

步骤 2:从自动化更新管理解决方案取消加入

请按照这些步骤进行操作

  1. 从 runbook 库导入迁移 runbook。 从浏览库搜索 azure 自动化更新,导入名为“从 Azure 自动化更新管理取消加入”的迁移 runbook 并发布该 runbook。

    显示如何导入移除迁移 Runbook 的屏幕截图。

    Runbook 支持 PowerShell 5.1。

    显示移除时 Runbook 支持 PowerShell 5.1 的屏幕截图。

  2. 将 Runbook 的详细日志记录设置为 True

    显示移除时的日志详细记录设置的屏幕截图。

  3. 启动 runbook 并传递自动化 Automation AccountResourceId、UserManagedServiceIdentityClientId 等参数。

    显示如何在移除时启动 Runbook 并传递参数的屏幕截图。

    可以从自动化帐户>属性提取 AutomationAccountResourceId。

    显示如何在移除时提取资源 ID 的屏幕截图。

    可以从自动化帐户>标识>用户分配>标识>属性>客户端 ID提取 UserManagedServiceIdentityClientId。

    显示如何在移除时提取客户端 ID 的屏幕截图。

  4. 检查 Azure runbook 日志,了解计算机和计划的取消加入状态。

    显示移除时 Runbook 如何记录的屏幕截图。

后端的取消加入脚本操作

  • 禁用此自动化帐户中存在的所有软件更新配置的所有基础计划。 这样做是为了确保不会对部分迁移到 V2 的 SUC 触发 Patch-MicrosoftOMSComputers Runbook。
  • 为从 V1 中的自动化更新管理取消加入的自动化帐户从链接的 Log Analytics 工作区中删除更新解决方案。
  • 所有 SUC 已禁用的汇总日志以及从链接的 Log Analytics 工作区中删除更新解决方案的状态也会输出到输出流。
  • 详细日志将输出到详细流。

后续步骤