Azure Arc 対応サーバーの更新プログラムをプログラムで管理する方法
この記事では、Azure の Azure Update Manager で、Azure REST API を使用して Azure Arc 対応サーバーで評価と更新プログラムのデプロイをトリガーするプロセスについて説明します。 Azure Update Manager を使うのが初めてで、さらに詳しく知りたい場合は、Update Manager の概要に関するページを参照してください。 Azure REST API を使用して Azure 仮想マシンを管理するには、「Azure 仮想マシンをプログラムで操作する方法」を参照してください。
Azure の Update Management では、Azure REST API を使用してプログラムによるアクセスを実現できます。 また、Azure PowerShellと Azure CLI から適切な REST コマンドを実行することもできます。
Azure Arc 対応サーバーを管理するための Azure REST API のサポートは、Update Manager 仮想マシン拡張機能を通じて利用できます。
[Update Assessment] \(更新の評価)
Azure Arc 対応サーバーで更新プログラムの評価をトリガーするには、次の POST 要求を指定します。
POST on `subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.HybridCompute/machines/machineName/assessPatches?api-version=2020-08-15-preview`
{
}
POST 要求を指定するには、Azure CLI az rest コマンドを使用できます。
az rest --method post --url https://management.azure.com/subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.HybridCompute/machines/machineName/assessPatches?api-version=2020-08-15-preview --body @body.json
バージョン 2020-08-15 以降では、要求本文の形式は次のとおりです。
{
}
更新プログラムのデプロイ
Azure Arc 対応サーバーで更新プログラムのデプロイをトリガーするには、次の POST 要求を指定します。
POST on `subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.HybridCompute/machines/machineName/installPatches?api-version=2020-08-15-preview`
要求本文
次の表で、要求本文の要素について説明します。
プロパティ | 説明 |
---|---|
maximumDuration |
OS 更新操作に使用できる最大時間 (分単位)。 ISO 8601 準拠の期間文字列 (PT100M など) である必要があります。 |
rebootSetting |
マシンの再起動が必要か、また、ゲスト OS の更新プログラムのインストールが完了するためにマシンの再起動が必要かを示すフラグ。 使用可能な値: IfRequired, NeverReboot, AlwaysReboot 。 |
windowsParameters |
サポートされている Microsoft Windows Server オペレーティング システムを実行している Azure VM 上のゲスト OS 更新プログラムのパラメーター オプション。 |
windowsParameters - classificationsToInclude |
Windows Server OS でサポートおよび提供される、適用する OS 更新プログラムのカテゴリまたは分類の一覧。 使用可能な値: Critical, Security, UpdateRollup, FeaturePack, ServicePack, Definition, Tools, Update |
windowsParameters - kbNumbersToInclude |
マシンで使用でき、インストールする必要がある Windows Update KB ID の一覧。 "classificationsToInclude" を含めた場合は、そのカテゴリで使用できる KB がインストールされます。 'kbNumbersToInclude' は、それ以降をインストールする特定の KB ID の一覧を提供するオプションです。 例: 1234 |
windowsParameters - kbNumbersToExclude |
マシンで使用でき、インストールしてはいけない Windows Update KB ID の一覧。 "classificationsToInclude" を含めた場合は、そのカテゴリで使用できる KB がインストールされます。 'kbNumbersToExclude' は、インストールしない特定のナレッジベース ID の一覧を提供するオプションです。 例: 5678 |
maxPatchPublishDate |
これは、この特定の公開日を上限としてそれ以前に公開されたパッチをインストールするために使われます。 |
linuxParameters |
サポートされている Linux ディストリビューションをマシンが実行中の場合のゲスト OS 更新用パラメーター オプション |
linuxParameters - classificationsToInclude |
Linux OS のパッケージ マネージャーによってサポートおよび提供されている、適用対象の OS 更新プログラムのカテゴリまたは分類の一覧。 使用可能な値: Critical, Security, Others 。 詳細については、Linux パッケージ マネージャーと OS のサポートに関する記事を参照してください。 |
linuxParameters - packageNameMasksToInclude |
マシンで使用でき、インストールする必要がある Linux パッケージの一覧。 "classificationsToInclude" を含めた場合は、そのカテゴリで使用できるパッケージがインストールされます。 'packageNameMasksToInclude' は、インストールするパッケージの一覧を提供するオプションです。 例: mysql, libc=1.0.1.1, kernel* |
linuxParameters - packageNameMasksToExclude |
マシンで使用でき、インストールする必要がない Linux パッケージの一覧。 "classificationsToInclude" を含めた場合は、そのカテゴリで使用できるパッケージがインストールされます。 'packageNameMasksToExclude' は、インストールしない特定のパッケージの一覧を提供するオプションです。 例: mysql, libc=1.0.1.1, kernel* |
POST 要求を指定するには、有効なパラメーターと値で次の Azure REST API 呼び出しを使用できます。
POST on 'subscriptions/subscriptionI/resourceGroups/resourceGroupName/providers/Microsoft.HybridCompute/machines/machineName/installPatches?api-version=2020-08-15-preview
{
"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 YYYY-MM-DD hh:MM 形式)。 ウィンドウは、指定されたタイム ゾーンに作成され、そのタイム ゾーンに応じて夏時間に調整されます。 有効期限は、将来の日付に設定する必要があります。 指定しない場合は、最大日時 9999-12-31 23:59:59 に設定されます。 |
properties.maintenanceWindow.recurEvery |
メンテナンス期間が繰り返されると予想されるレート。 レートは日、週、月のスケジュールで表すことができます。 日単位のスケジュールは、recurEvery: [整数値の頻度]['Day(s)'] という形式にできます。 頻度が指定されていない場合、既定の頻度は 1 です。 日単位のスケジュールの例を示すと、recurEvery: Day、recurEvery: 3Days となります。 週間スケジュールは recurEvery : [頻度 (整数値)]['Week(s)'] [月曜日から日曜日までの平日をカンマで区切ったリスト(オプション)] として書式設定されます。 週単位のスケジュールの例を示すと、recurEvery: 3Weeks、recurEvery: Week Saturday, Sunday となります。 月単位のスケジュールは、[整数値の頻度]['Month(s)'] [コンマ区切りのその月の日付のリスト] または [整数値の頻度]['Month(s)'] [その月の何週目か (First、Second、Third、Fourth、Last)] [Monday から Sunday までの曜日] という形式にできます。 月単位のスケジュールの例を示すと、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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/resourceGroups/atscalepatching/providers/Microsoft.Compute/virtualMachines/win-atscalepatching-1/providers/Microsoft.Maintenance/configurationAssignments/TestAzureInGuestAdv?api-version=2021-09-01-preview
{
"properties": {
"maintenanceConfigurationId": "/subscriptions/aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e/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 のトラブルシューティングに関するページを参照してください。