Azure VM の更新プログラムをプログラムで管理する方法

このアーティクルでは、Azure REST API を使って、Azure の Azure Update Manager で Azure 仮想マシン上への評価と更新プログラムのデプロイをトリガーするプロセスについて説明します。 Update Manager を使うのが初めてであり、さらに詳しく知りたい場合は、Azure Update Manager の概要 に関するページをご覧ください。 Azure REST API を使用して Arc 対応サーバーを管理するには、「Arc 対応サーバーをプログラムで操作する方法」をご覧ください。

Azure の Azure Update Management を使うと、プログラムによるアクセスとして Azure REST API を利用できます。 また、Azure PowerShellAzure CLI から適切な REST コマンドを実行することもできます。

Azure VM を管理するための Azure REST API のサポートは、Update Manager 仮想マシン拡張機能によって利用できます。

[Update Assessment] \(更新の評価)

Azure VM で更新プログラムの評価をトリガーするには、次の POST 要求を指定します。

POST on `subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.Compute/virtualMachines/virtualMachineName/assessPatches?api-version=2020-12-01`

POST 要求を規定するには、Azure CLI az vm assess-patches コマンドを使用できます。

az vm assess-patches -g MyResourceGroup -n MyVm

更新プログラムのデプロイ

Azure VM で更新プログラムのデプロイをトリガーするには、次の POST 要求を指定します。

POST on `subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.Compute/virtualMachines/virtualMachineName/installPatches?api-version=2020-12-01`

要求本文

要求本文の要素を次の表に示します:

プロパティ 説明
maximumDuration 操作が実行される最大時間。 PT4H (4 時間) などの ISO 8601 準拠の期間文字列である必要があります。
rebootSetting マシンの再起動が必要か、また、ゲスト OS の更新インストールが完了するためにマシンの再起動が必要かを示すフラグ。 使用可能な値: IfRequired, NeverReboot, AlwaysReboot
windowsParameters サポートされている Microsoft Windows Server オペレーティング システムを実行している Azure VM 上のゲスト OS 更新プログラムのパラメーター オプション。
windowsParameters - classificationsToInclude コンピューターにインストールする更新プログラムの選択に使用するカテゴリ/分類の一覧。 使用可能な値: Critical, Security, UpdateRollUp, FeaturePack, ServicePack, Definition, Tools, Updates
windowsParameters - kbNumbersToInclude インストールすべき Windows Update KB ID の一覧。 classificationsToInclude 一覧で提供される分類に属するすべての更新プログラムがインストールされます。 kbNumbersToInclude は、分類に加えてインストールする特定の KB のオプション一覧です。 例: 1234
windowsParameters - kbNumbersToExclude インストールすべきでない Windows Update KB ID の一覧。 このパラメーターは、windowsParameters - classificationsToInclude をオーバーライドします。これは、ここで指定した Windows Update KB ID は、classificationsToInclude たとえパラメーターによる分類に属していたとしてもインストールされないことを意味します。
linuxParameters サポートされている Linux Server オペレーティング システムを実行している Azure VM 上のゲスト OS 更新プログラムのパラメーター オプション。
linuxParameters - classificationsToInclude コンピューターにインストールする更新プログラムの選択に使用するカテゴリ/分類の一覧。 使用可能な値: Critical, Security, Other
linuxParameters - packageNameMasksToInclude インストールすべき Linux パッケージの一覧。 classificationsToInclude 一覧で提供される分類に属するすべての更新プログラムがインストールされます。 packageNameMasksToInclude は、分類に加えてインストールするパッケージ名のオプション一覧です。 例: mysql, libc=1.0.1.1, kernel*
linuxParameters - packageNameMasksToExclude インストールすべきでない更新プログラムの一覧。 このパラメーターは、linuxParameters - packageNameMasksToExclude をオーバーライドします。これは、ここで指定したパッケージは、classificationsToInclude パラメーターに指定された分類に属していてもインストールされません。

POST 要求を指定するには、有効なパラメーターと値で次の Azure REST API 呼び出しを使用できます。

POST on 'subscriptions/{subscriptionId}/resourceGroups/acmedemo/providers/Microsoft.Compute/virtualMachines/ameacr/installPatches?api-version=2020-12-01

{
    "maximumDuration": "PT120M",
    "rebootSetting": "IfRequired",
    "windowsParameters": {
      "classificationsToInclude": [
        "Security",
        "UpdateRollup",
        "FeaturePack",
        "ServicePack"
      ],
      "kbNumbersToInclude": [
        "11111111111",
        "22222222222222"
      ],
      "kbNumbersToExclude": [
        "333333333333",
        "55555555555"
      ]
    }
  }'

メンテナンス構成スケジュールを作成する

メンテナンス構成スケジュールを作成するには、次の PUT 要求を指定します。

PUT on `/subscriptions/<subscriptionId>/resourceGroups/<resourceGroup>/providers/Microsoft.Maintenance/maintenanceConfigurations/<maintenanceConfigurationsName>?api-version=2021-09-01-preview`

要求本文

要求本文の要素を次の表に示します:

プロパティ 説明
id リソースの完全修飾識別子
location リソースの場所を取得または設定する
name リソースの名前
properties.extensionProperties maintenanceConfiguration の extensionProperties を取得または設定する
properties.maintenanceScope 構成の maintenanceScope を取得または設定する
properties.maintenanceWindow.duration HH:MM 形式のメンテナンス期間。 指定しない場合は、指定されたメンテナンス範囲に基づいて既定値が設定されます。 例: 05:00。.
properties.maintenanceWindow.expirationDateTime メンテナンス期間の有効な有効期限 (YYYY-MM-DD hh:mm 形式)。 ウィンドウは、指定されたタイム ゾーンに作成され、そのタイム ゾーンに応じて夏時間に調整されます。 有効期限は、将来の日付に設定する必要があります。 指定しない場合は、日時の最大値である 9999-12-31 23:59:59 に設定されます。
properties.maintenanceWindow.recurEvery メンテナンス期間が繰り返されると予想されるレート。 レートは日、週、月のスケジュールで表すことができます。 日単位のスケジュールは以下のように書式設定されます recurEvery: [頻度 (整数値)] [' 日 (日数)']。 頻度が指定されていない場合、既定の頻度は 1 です。 日単位のスケジュールの例としては、recurEvery: Day、recurEvery: 3Days。 週単位のスケジュールは以下のように書式設定されます recurEvery: [頻度 (整数値)][' 週 (週数)'] [平日をカンマで区切ったオプションのリスト 月曜日から日曜日]。 週単位のスケジュールの例としては、recurEvery: Week、recurEvery: 3Weeks。 月次スケジュールは、[頻度 (整数値)]['Month(s)'] [月の日のコンマ区切りリスト] または、[頻度 (整数値)]['Month(s)'] [週の月 (第 1、第 2、第 3、第 4、最後)] [平日の月曜日 - 日曜日] として書式設定されます。 月単位のスケジュールの例としては、recurEvery: Month、recurEvery: 2Months、 recurEvery: Month day23, day24、 recurEvery: Month Last Sunday、recurEvery: Month Fourth Monday。
properties.maintenanceWindow.startDateTime メンテナンス期間の有効な開始日 (YYYY-MM-DD hh:mm 形式)。 開始日は、現在の日付または将来の日付に設定できます。 ウィンドウは、指定されたタイム ゾーンに作成され、そのタイム ゾーンに応じて夏時間に調整されます。
properties.maintenanceWindow.timeZone タイムゾーンの名前。 タイムゾーンのリストは、PowerShell で [System.TimeZoneInfo]::GetSystemTimeZones() を実行することで取得できます。 例: 太平洋標準時、UTC、西ヨーロッパ標準時、韓国標準時、中央 オーストラリア標準時。
properties.namespace リソースの名前空間を取得または設定します
properties.visibility 構成の可視性を取得または設定します。 既定値は、「Custom」です
systemData createdBy および modifiedBy 情報を含む Azure Resource Manager メタデータ。
tags リソースのタグを取得または設定します
type リソースの種類です

POST 要求を指定するには、有効なパラメーターと値で次の Azure REST API 呼び出しを使用できます。

PUT on '/subscriptions/0f55bb56-6089-4c7e-9306-41fb78fc5844/resourceGroups/atscalepatching/providers/Microsoft.Maintenance/maintenanceConfigurations/TestAzureInGuestAdv2?api-version=2021-09-01-preview

{
  "location": "eastus2euap",
  "properties": {
    "namespace": null,
    "extensionProperties": {
      "InGuestPatchMode" : "User"
    },
    "maintenanceScope": "InGuestPatch",
    "maintenanceWindow": {
      "startDateTime": "2021-08-21 01:18",
      "expirationDateTime": "2221-05-19 03:30",
      "duration": "01:30",
      "timeZone": "India Standard Time",
      "recurEvery": "Day"
    },
    "visibility": "Custom",
    "installPatches": {
      "rebootSetting": "IfRequired",
      "windowsParameters": {
        "classificationsToInclude": [
          "Security",
          "Critical",
          "UpdateRollup"
        ]
      },
      "linuxParameters": {
        "classificationsToInclude": [
          "Other"
        ]
      }
    }
  }
}'

VM をスケジュールに関連付ける

メンテナンス構成スケジュールを VM に関連付けるには、次の PUT 要求を指定します。

PUT on `<ARC or Azure VM resourceId>/providers/Microsoft.Maintenance/configurationAssignments/<configurationAssignment name>?api-version=2021-09-01-preview`

PUT 要求を指定するには、有効なパラメーターと値で次の Azure REST API 呼び出しを使用できます。

PUT on '/subscriptions/0f55bb56-6089-4c7e-9306-41fb78fc5844/resourceGroups/atscalepatching/providers/Microsoft.Compute/virtualMachines/win-atscalepatching-1/providers/Microsoft.Maintenance/configurationAssignments/TestAzureInGuestAdv?api-version=2021-09-01-preview

{
  "properties": {
    "maintenanceConfigurationId": "/subscriptions/0f55bb56-6089-4c7e-9306-41fb78fc5844/resourcegroups/atscalepatching/providers/Microsoft.Maintenance/maintenanceConfigurations/TestAzureInGuestIntermediate2"
  },
  "location": "eastus2euap"
}'

スケジュールからマシンを削除する

スケジュールからマシンを削除するには、次に示すように、Azure Resource Graph から、マシンを現在のスケジュールに関連付けるために作成されたマシンのすべての構成割り当て名を取得します:

maintenanceresources
| where type =~ "microsoft.maintenance/configurationassignments"
| where properties.maintenanceConfigurationId =~ "<maintenance configuration Resource ID>"
| where properties.resourceId =~ "<Machine Resource Id>"
| project name, id

上記のリストから名前を取得した後、DELETE 要求に従って構成割り当てを削除します。

DELETE on `<ARC or Azure VM resourceId>/providers/Microsoft.Maintenance/configurationAssignments/<configurationAssignment name>?api-version=2021-09-01-preview`

次のステップ

  • Update Manager によって生成される、更新プログラムの評価とデプロイ ログを表示するには、クエリ ログ に関するページを参照してください。
  • 問題をトラブルシューティングするには、Update Manager のトラブルシューティングに関するページを参照してください。