メンテナンス構成と 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 での仮想マシンのメンテナンス」をご覧ください。