メンテナンス構成と Azure CLI を使用して更新を制御する
適用対象: ✔️ Linux VM ✔️ Windows VM ✔️ フレキシブル スケール セット ✔️ 均一スケール セット
メンテナンス構成機能を使って、さまざまな Azure リソースにプラットフォームの更新プログラムを適用するタイミングを制御できます。 この記事では、この機能を使うための Azure CLI のオプションについて説明します。 メンテナンス構成を使う利点、その制限、他の管理オプションについて詳しくは、メンテナンス構成を使用したプラットフォーム更新プログラムの管理に関する記事をご覧ください。
重要
特定の "スコープ" は、特定のマシンの種類とスケジュールをサポートします。 仮想マシン (VM) に適したスコープを選んでください。
メンテナンス構成を作成する
メンテナンス構成を作成する最初のステップは、構成のコンテナーとしてリソース グループを作成することです。 この例では、myMaintenanceRG という名前のリソース グループを eastus に作成します。 使用するリソース グループが既にある場合は、この部分をスキップし、残りの例のリソース グループ名を自分の所有者に置き換えることができます。
az group create \
--location eastus \
--name myMaintenanceRG
リソース グループを作成したら、az maintenance configuration create
を使ってメンテナンス構成を作成します。
Host
この例で作成する myConfig という名前のメンテナンス構成は、スコープがホスト マシンで、スケジュールされた期間は毎月第 4 月曜日の 5 時間です。
az maintenance configuration create \
--resource-group myMaintenanceRG \
--resource-name myConfig \
--maintenance-scope host \
--location eastus \
--maintenance-window-duration "05:00" \
--maintenance-window-recur-every "Month Fourth Monday" \
--maintenance-window-start-date-time "2020-12-30 08:00" \
--maintenance-window-time-zone "Pacific Standard Time"
--maintenance-scope host
を使用して、そのメンテナンス構成が、ホスト インフラストラクチャに対する更新をコントロールするために確実に使用されているか確認します。 同じ名前の構成を別の場所に作成しようとすると、エラーが発生します。 構成名は、リソース グループに対して一意である必要があります。
メンテナンス構成が正常に作成されたかどうかを確認するには、az maintenance configuration list
を使って、使用できるメンテナンス構成を照会できます。
az maintenance configuration list
--query "[].{Name:name, ID:id}"
--output table
メンテナンスの繰り返しは、日、週、または月の単位で表すことができます。 次に例をいくつか示します。
- 日単位:
maintenance-window-recur-every
の値が"Day"
や"3Days"
など。 - 週単位:
maintenance-window-recur-every
の値が"3Weeks"
や"Week Saturday,Sunday"
など。 - 月単位:
maintenance-window-recur-every
の値が"Month day23,day24"
、"Month Last Sunday"
、Month Fourth Monday
など。
仮想マシン スケール セット
この例で作成する myConfig という名前のメンテナンス構成は、スコープが仮想マシン スケール セットの OS イメージで、スケジュールされた期間は毎月第 4 月曜日の 5 時間です。
az maintenance configuration create \
--resource-group myMaintenanceRG \
--resource-name myConfig \
--maintenance-scope osimage \
--location eastus \
--maintenance-window-duration "05:00" \
--maintenance-window-recur-every "Month Fourth Monday" \
--maintenance-window-start-date-time "2020-12-30 08:00" \
--maintenance-window-time-zone "Pacific Standard Time"
ゲスト VM
この例で作成する myConfig という名前のメンテナンス構成は、スコープがゲスト マシン (VM と Azure Arc 対応サーバー) で、スケジュールされた期間は 20 日ごとに 2 時間です。 ゲスト VM でのメンテナンス構成の詳細を参照してください。
az maintenance configuration create \
--resource-group myMaintenanceRG \
--resource-name myConfig \
--maintenance-scope InGuestPatch \
--location eastus \
--maintenance-window-duration "02:00" \
--maintenance-window-recur-every "20days" \
--maintenance-window-start-date-time "2022-12-30 07:00" \
--maintenance-window-time-zone "Pacific Standard Time" \
--install-patches-linux-parameters package-name-masks-to-exclude="ppt" package-name-masks-to-include="apt" classifications-to-include="Other" \
--install-patches-windows-parameters kb-numbers-to-exclude="KB123456" kb-numbers-to-include="KB123456" classifications-to-include="FeaturePack" \
--reboot-setting "IfRequired" \
--extension-properties InGuestPatchMode="User"
構成を割り当てる
az maintenance assignment create
を使用して、ご自身のマシンに構成を割り当てます。
分離された VM
構成の ID を使って、構成を分離ホスト VM に適用します。 --resource-type virtualMachines
を指定します。 --resource-name
では VM の名前、--resource-group
では VM のリソース グループ、--location
では VM の場所を、それぞれ指定します。
az maintenance assignment create \
--resource-group myMaintenanceRG \
--location eastus \
--resource-name myVM \
--resource-type virtualMachines \
--provider-name Microsoft.Compute \
--configuration-assignment-name myConfig \
--maintenance-configuration-id "/subscriptions/{subscription ID}/resourcegroups/myMaintenanceRG/providers/Microsoft.Maintenance/maintenanceConfigurations/myConfig"
専用ホスト
専用ホストに構成を適用するには、--resource-type hosts
と --resource-parent-name
を含める必要があります。これらには、ホスト グループの名前と --resource-parent-type hostGroups
を使用します。
パラメーター --resource-id
は、ホストの ID です。 az-vm-host-get-instance-view を使用すると、専用ホストの ID を取得できます。
az maintenance assignment create \
--resource-group myDHResourceGroup \
--resource-name myHost \
--resource-type hosts \
--provider-name Microsoft.Compute \
--configuration-assignment-name myConfig \
--maintenance-configuration-id "/subscriptions/{subscription ID}/resourcegroups/myDhResourceGroup/providers/Microsoft.Maintenance/maintenanceConfigurations/myConfig" \
--location eastus \
--resource-parent-name myHostGroup \
--resource-parent-type hostGroups
仮想マシン スケール セット
az maintenance assignment create \
--resource-group myMaintenanceRG \
--location eastus \
--resource-name myVMSS \
--resource-type virtualMachineScaleSets \
--provider-name Microsoft.Compute \
--configuration-assignment-name myConfig \
--maintenance-configuration-id "/subscriptions/{subscription ID}/resourcegroups/myMaintenanceRG/providers/Microsoft.Maintenance/maintenanceConfigurations/myConfig"
ゲスト VM
az maintenance assignment create \
--resource-group myMaintenanceRG \
--location eastus \
--resource-name myVM \
--resource-type virtualMachines \
--provider-name Microsoft.Compute \
--configuration-assignment-name myConfig \
--maintenance-configuration-id "/subscriptions/{subscription ID}/resourcegroups/myMaintenanceRG/providers/Microsoft.Maintenance/maintenanceConfigurations/myConfig"
構成を確認する
az maintenance assignment list
を使って、構成が正しく適用されたことを確認したり、現在適用されている構成を調べたりできます。
分離された VM
az maintenance assignment list \
--provider-name Microsoft.Compute \
--resource-group myMaintenanceRG \
--resource-name myVM \
--resource-type virtualMachines \
--query "[].{resource:resourceGroup, configName:name}" \
--output table
専用ホスト
az maintenance assignment list \
--resource-group myDHResourceGroup \
--resource-name myHost \
--resource-type hosts \
--provider-name Microsoft.Compute \
--resource-parent-name myHostGroup \
--resource-parent-type hostGroups \
--query "[].{ResourceGroup:resourceGroup,configName:name}" \
--output table
仮想マシン スケール セット
az maintenance assignment list \
--provider-name Microsoft.Compute \
--resource-group myMaintenanceRG \
--resource-name myVMSS \
--resource-type virtualMachines \
--query "[].{resource:resourceGroup, configName:name}" \
--output table
ゲスト VM
az maintenance assignment list \
--provider-name Microsoft.Compute \
--resource-group myMaintenanceRG \
--resource-name myVM \
--resource-type virtualMachines \
--query "[].{resource:resourceGroup, configName:name}" \
--output table
保留中の更新プログラムを確認する
az maintenance update list
を使用すると、保留中の更新プログラムがあるかどうかを確認できます。 --subscription
を、その VM を含むサブスクリプションの ID に更新します。
更新プログラムがない場合、コマンドは Resource not found...StatusCode: 404
というテキストを含むエラー メッセージを返します。
更新プログラムがある場合、複数の更新プログラムが保留中の場合でも、コマンドは 1 つだけを返します。 この更新プログラムのデータは、オブジェクトで返されます。
[
{
"impactDurationInSec": 9,
"impactType": "Freeze",
"maintenanceScope": "Host",
"notBefore": "2020-03-03T07:23:04.905538+00:00",
"resourceId": "/subscriptions/9120c5ff-e78e-4bd0-b29f-75c19cadd078/resourcegroups/DemoRG/providers/Microsoft.Compute/hostGroups/demoHostGroup/hosts/myHost",
"status": "Pending"
}
]
分離された VM
分離された VM の保留中の更新プログラムを確認します。 この例では、読みやすいように出力を表形式で示しています。
az maintenance update list \
--subscription {subscription ID} \
--resource-group myMaintenanceRg \
--resource-name myVM \
--resource-type virtualMachines \
--provider-name Microsoft.Compute \
--output table
専用ホスト
専用ホストの保留中の更新プログラムを確認します。 この例では、読みやすくするために出力を表形式で表示しています。 リソースの値は実際の値に置き換えてください。
az maintenance update list \
--subscription {subscription ID} \
--resource-group myHostResourceGroup \
--resource-name myHost \
--resource-type hosts \
--provider-name Microsoft.Compute \
--resource-parentname myHostGroup \
--resource-parent-type hostGroups \
--output table
更新プログラムの適用
az maintenance apply update
を使用して、保留中の更新プログラムを適用します。 成功すると、このコマンドは更新プログラムの詳細を含む JSON を返します。 更新プログラムを適用する呼び出しは、完了するまでに最大 2 時間かかることがあります。
分離された VM
分離された VM に更新プログラムを適用する要求を作成します。
az maintenance applyupdate create \
--subscription {subscriptionID} \
--resource-group myMaintenanceRG \
--resource-name myVM \
--resource-type virtualMachines \
--provider-name Microsoft.Compute
専用ホスト
専用ホストに更新プログラムを適用します。
az maintenance applyupdate create \
--subscription {subscriptionID} \
--resource-group myHostResourceGroup \
--resource-name myHost \
--resource-type hosts \
--provider-name Microsoft.Compute \
--resource-parent-name myHostGroup \
--resource-parent-type hostGroups
仮想マシン スケール セット
スケール セットに更新プログラムを適用します。
az maintenance applyupdate create \
--subscription {subscriptionID} \
--resource-group myMaintenanceRG \
--resource-name myVMSS \
--resource-type virtualMachineScaleSets \
--provider-name Microsoft.Compute
更新プログラムの適用状態を確認する
az maintenance applyupdate get
を使って、更新プログラムの進行状況を確認できます。
最後の更新プログラムの結果を表示するには、更新プログラムの名前として default
を使います。 または、myUpdateName
を、az maintenance applyupdate create
を実行したときに返された更新プログラムの名前に置き換えます。
Status : Completed
ResourceId : /subscriptions/12ae7457-4a34-465c-94c1-17c058c2bd25/resourcegroups/TestShantS/providers/Microsoft.Comp
ute/virtualMachines/DXT-test-04-iso
LastUpdateTime : 1/1/2020 12:00:00 AM
Id : /subscriptions/12ae7457-4a34-465c-94c1-17c058c2bd25/resourcegroups/TestShantS/providers/Microsoft.Comp
ute/virtualMachines/DXT-test-04-iso/providers/Microsoft.Maintenance/applyUpdates/default
Name : default
Type : Microsoft.Maintenance/applyUpdates
LastUpdateTime
は、自分で更新プログラムを開始した場合でも、セルフ メンテナンス期間を使わなかったためにプラットフォームが開始した場合でも、更新が完了した日時です。 更新プログラムがメンテナンス構成によって適用されなかった場合、LastUpdateTime
は既定値を示します。
分離された VM
az maintenance applyupdate get \
--subscription {subscriptionID} \
--resource-group myMaintenanceRG \
--resource-name myVM \
--resource-type virtualMachines \
--provider-name Microsoft.Compute \
--apply-update-name myUpdateName \
--query "{LastUpdate:lastUpdateTime, Name:name, ResourceGroup:resourceGroup, Status:status}" \
--output table
専用ホスト
az maintenance applyupdate get \
--subscription {subscriptionID} \
--resource-group myMaintenanceRG \
--resource-name myHost \
--resource-type hosts \
--provider-name Microsoft.Compute \
--resource-parent-name myHostGroup \
--resource-parent-type hostGroups \
--apply-update-name myUpdateName \
--query "{LastUpdate:lastUpdateTime, Name:name, ResourceGroup:resourceGroup, Status:status}" \
--output table
仮想マシン スケール セット
az maintenance applyupdate get \
--subscription {subscriptionID} \
--resource-group myMaintenanceRG \
--resource-name myVMSS \
--resource-type virtualMachineScaleSets \
--provider-name Microsoft.Compute \
--apply-update-name myUpdateName \
--query "{LastUpdate:lastUpdateTime, Name:name, ResourceGroup:resourceGroup, Status:status}" \
--output table
メンテナンス構成を削除する
メンテナンス構成を削除するには、az maintenance configuration delete
を使います。 構成を削除すると、関連付けられているリソースからそのメンテナンス コントロールが削除されます。
az maintenance configuration delete \
--subscription 1111abcd-1a11-1a2b-1a12-123456789abc \
-resource-group myResourceGroup \
--resource-name myConfig
次のステップ
詳しくは、「Azure での仮想マシンのメンテナンス」をご覧ください。