分享方式:


使用自動化 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 不存在或已更新,則需要此步驟。
  • 若要執行此必要條件指令碼,您必須在包含自動化更新管理資源 (例如機器、排程、Log Analytics 工作區和自動化帳戶) 的所有訂用帳戶上擁有 Microsoft.Authorization/roleAssignments/write 權限。 請參閱 如何指派 Azure 角色
  • 您必須擁有更新管理權限

顯示命令如何安裝模組的螢幕擷取畫面。

B. 執行指令碼

在本機下載並執行 PowerShell 指令碼 MigrationPrerequisiteScript。 此指令碼會採用自動化帳戶的 AutomationAccountResourceId 進行移轉,並採用 AutomationAccountAzureEnvironment 作為輸入。 AutomationAccountAzureEnvironment 的接受值為 AzureCloud、AzureUSGovernment 和 AzureChina,這些表示自動化帳戶所屬的雲端。

顯示如何下載和執行指令碼的螢幕擷取畫面。

您可以移至 [自動化帳戶]>[屬性] 來擷取 AutomationAccountResourceId。

顯示如何擷取資源識別碼的螢幕擷取畫面。

C. Verify

執行指令碼之後,請確認自動化帳戶中已建立使用者受控識別。 [自動化帳戶]>[身分識別]>[使用者指派]

顯示如何確認已建立使用者受控識別的螢幕擷取畫面。

D. 指令碼的後端作業

  • 更新自動化帳戶的 Az.Modules,這是執行移轉和下架指令碼的必要項目。

  • 建立名稱為 AutomationAccountAzureEnvironment 的自動化變數,以用來儲存自動化帳戶所屬的 Azure 雲端環境。

  • 在與自動化帳戶相同的訂用帳戶和資源群組中建立使用者身分識別。 使用者身分識別的名稱會如同 AutomationAccount_aummig_umsi

  • 將使用者身分識別附加至自動化帳戶。

  • 指令碼會將下列權限指派給使用者受控識別:需要的更新管理權限

    1. 為此,指令碼會擷取此自動化帳戶下上架至自動化更新管理的所有機器,並剖析其訂用帳戶識別碼,以提供所需的 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。

      顯示如何擷取自動化帳戶資源識別碼的螢幕擷取畫面。

    2. 您可以從 [自動化帳戶]>[身分識別]>[使用者指派]>[身分識別]>[屬性]>[用戶端識別碼] 中擷取 UserManagedServiceIdentityClientId。

      顯示如何擷取用戶端識別碼的螢幕擷取畫面。

    3. 若將 [EnablePeriodicAssessmentForMachinesOnboardedToUpdateManagement] 設定為 TRUE,將會在所有上架至自動化更新管理的機器上啟用定期評量屬性。

    4. 若將 [MigrateUpdateSchedulesAndEnablePeriodicAssessmentonLinkedMachines] 設定為 TRUE,則會將自動化更新管理中的所有更新排程遷移至 Azure 更新管理員,並且也會在所有連結至這些排程的機器上,將定期評量屬性設為 True

    5. 您必須指定 ResourceGroupForMaintenanceConfigurations,其中會建立 Azure 更新管理員中的所有維護設定。 如果您提供新的名稱,則會建立資源群組,而其中會建立所有維護設定。 不過,如果您提供資源群組已經存在的名稱,則會在現有的資源群組中建立所有維護設定。

  4. 檢查 Azure Runbook 記錄,以取得 SUC 的執行狀態和移轉狀態。

    顯示 Runbook 記錄的螢幕擷取畫面。

後端中的 Runbook 作業

Runbook 的移轉會執行下列工作:

  • 在所有機器上啟用定期評量。
  • 自動化帳戶中的所有排程都會遷移至 Azure 更新管理員,並針對每個排程建立對應的維護設定,所有排程都具有相同的屬性。

關於指令碼

以下是移轉指令碼的行為:

  • 檢查以其名稱為輸入的資源群組是否已經存在於自動化帳戶的訂用帳戶中。 如果沒有,請以客戶指定的名稱建立資源群組。 此資源群組用於建立 V2 的 MRP 設定。

  • Azure 更新管理員中無法使用 RebootOnly 設定。 具有 RebootOnly 設定的排程不會遷移。

  • 篩選出狀態為 errored/expired/provisioningFailed/disabled 的 SUC,並將其標示為未移轉,然後列印指出這類 SUC 未移轉的適當記錄。

  • 設定指派名稱是格式為 AUMMig_AAName_SUCName 的字串

  • 透過檢查 Azure Resource Graph,找出是否已將此動態範圍指派給維護設定。 如果未指派,則只會以格式為 AUMMig_ AAName_SUCName_SomeGUID 的指派名稱指派。

  • 針對已設定前置/後置工作的排程,指令碼會為前置/後置工作中的 Runbook 建立自動化 Webhook,並為維護前/後事件建立事件方格訂用帳戶。 如需詳細資訊,請參閱Azure 更新管理員中的前置/後置工作的運作方式

  • 彙總的記錄集會列印至輸出資料流,以提供機器和 SUC 的整體狀態。

  • 詳細記錄會列印至詳細資訊資料流。

  • 移轉後,軟體更新設定的移轉狀態可能是下列四種的其中一種:

    • MigrationFailed
    • PartiallyMigrated
    • NotMigrated
    • Migrated

下表顯示與每個移轉狀態相關聯的案例。

MigrationFailed PartiallyMigrated NotMigrated Migrated
無法建立軟體更新設定的維護設定。 非零數目的機器無法套用 Patch-Settings。 無法從 API 取得軟體更新設定,因為某些用戶端/伺服器錯誤,例如內部服務錯誤
非零數目的機器具有失敗的設定指派。 軟體更新設定的重新啟動設定為僅限重新啟動。 Azure 更新管理員目前不支援此功能。
非零數目的動態查詢無法解析,無法對 Azure Resource Graph 執行查詢。
非零數目的動態範圍設定指派失敗。 軟體更新設定在 DB 中沒有成功佈建狀態。
軟體更新設定具有儲存的搜尋查詢。 軟體更新設定在 DB 中的狀態為 errored。
軟體更新設定具有尚未成功遷移的前置/後置工作。 與軟體更新設定相關聯的排程已在移轉時過期。
與軟體更新設定相關聯的排程已停用。
遷移軟體更新設定時未處理的例外狀況。 零部機器無法套用 Patch-Settings。

And

零部機器具有失敗的設定指派。

And

零個動態查詢無法解析,無法對 Azure Resource Graph 執行查詢。

And

零個動態範圍設定指派失敗。

And

軟體更新設定具有零個儲存的搜尋查詢。

若要從上述資料表中找出軟體更新設定為何有特定狀態的相對應案例,請查看詳細資訊/失敗/警告記錄,以取得錯誤碼和錯誤訊息。

您也可以使用更新排程的名稱進行搜尋,以取得其專屬記錄來進行偵錯。

顯示如何檢視專屬記錄以進行偵錯的螢幕擷取畫面。

步驟 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。

    顯示如何在下架時擷取資源識別碼的螢幕擷取畫面。

    您可以從 [自動化帳戶]>[身分識別]>[使用者指派]>[身分識別]>[屬性]>[用戶端識別碼] 中擷取 UserManagedServiceIdentityClientId。

    顯示如何在下架時擷取用戶端識別碼的螢幕擷取畫面。

  4. 檢查 Azure Runbook 記錄,以取得機器和排程的下架狀態。

    顯示下架時 Runbook 記錄方式的螢幕擷取畫面。

後端的下架指令碼作業

  • 停用此自動化帳戶中所有軟體更新設定的所有基礎排程。 這樣做可確保 Patch-MicrosoftOMSComputers Runbook 不會針對部分移轉至 V2 的 SUC 觸發。
  • 針對從 V1 中自動化更新管理下架的自動化帳戶,在已連結的 Log Analytics 工作區中刪除更新解決方案。
  • 已停用所有 SUC 的摘要記錄,從連結的 Log Analytics 工作區移除更新解決方案的狀態也會列印至輸出資料流。
  • 詳細記錄會列印在詳細資訊資料流上。

下一步