メンテナンス構成と Azure PowerShell による更新をコントロールする
適用対象: ✔️ Linux VM ✔️ Windows VM ✔️ フレキシブル スケール セット ✔️ 均一スケール セット
メンテナンス構成機能を使って、さまざまな Azure リソースにプラットフォームの更新プログラムを適用するタイミングを制御できます。 この記事では、専用ホストと分離仮想マシン (VM) に関する Azure PowerShell のオプションについて説明します。 メンテナンス構成機能を使う利点、その制限、他の管理オプションについて詳しくは、メンテナンス構成を使用したプラットフォーム更新プログラムの管理に関する記事をご覧ください。
スケール セットに対するメンテナンス構成の使用に関する情報をお探しの場合は、「Azure 仮想マシン スケール セットのメンテナンス コントロール」をご覧ください。
重要
特定の "スコープ" は、特定のマシンの種類とスケジュールをサポートします。 お使いの VM に適したスコープを選んでください。
Azure PowerShell モジュールを有効にする
PowerShellGet
が最新であることを確認します。
Install-Module -Name PowerShellGet -Repository PSGallery -Force
Az.Maintenance
Azure PowerShell モジュールをインストールします。
Install-Module -Name Az.Maintenance
最新バージョンの Az.Maintenance
(バージョン 1.2.0) を実行していることを確認します。
Get-Module -ListAvailable -Name Az.Maintenance
適切なバージョンの Az.Maintenance
を実行していることを確認します。
Import-Module -Name Az.Maintenance -RequiredVersion 1.2.0
ローカル環境にインストールする場合は、管理者として Azure PowerShell プロンプトを開いてください。
信頼されていないリポジトリからインストールすることを確認するように求められる場合があります。 モジュールをインストールするには、「Y」と入力するか、[すべてはい] を選びます。
メンテナンス構成を作成する
メンテナンス構成を作成する最初のステップは、構成のコンテナーとしてリソース グループを作成することです。 この例では、myMaintenanceRG という名前のリソース グループを eastus に作成します。 使用するリソース グループが既にある場合は、この部分をスキップし、残りの例のリソース グループ名を自分の所有者に置き換えることができます。
New-AzResourceGroup `
-Location eastus `
-Name myMaintenanceRG
Azure でリソースに更新プログラムを反復的に適用するスケジュールされた期間を宣言できます。 スケジュールされた期間を作成した後は、手動で更新プログラムを適用する必要はなくなります。
メンテナンスの繰り返しは、日、週、または月の単位で表すことができます。 次に例をいくつか示します。
- 日単位:
RecurEvery
の値が"Day"
や"3Days"
など。 - 週単位:
RecurEvery
の値が"3Weeks"
や"Week Saturday,Sunday"
など。 - 月単位:
RecurEvery
の値が"Month day23,day24"
、"Month Last Sunday"
、"Month Fourth Monday"
など。
Host
この例で作成する myConfig という名前のメンテナンス構成は、スコープが Host
で、スケジュールされた期間は毎月第 4 月曜日の 5 時間です。 このスコープに対するスケジュールの duration
の値は、2 時間以上にする必要があります。 まず、New-AzMaintenanceConfiguration
のパラメータを定義します。
$RGName = "myMaintenanceRG"
$configName = "myConfig"
$scope = "Host"
$location = "eastus"
$timeZone = "Pacific Standard Time"
$duration = "05:00"
$startDateTime = "2022-11-01 00:00"
$recurEvery = "Month Fourth Monday"
パラメータを定義したら、New-AzMaintenanceConfiguration
コマンドレットを使って構成を作成できます。
New-AzMaintenanceConfiguration
-ResourceGroup $RGName `
-Name $configName `
-MaintenanceScope $scope `
-Location $location `
-StartDateTime $startDateTime `
-TimeZone $timeZone `
-Duration $duration `
-RecurEvery $recurEvery
$scope = "Host"
を使って、そのメンテナンス構成が、ホスト マシンでの更新を制御するために使われていることを確認します。 対象にしているマシンの特定のスコープ用の構成を作成してください。 スコープに関する詳細を参照してください。
OS イメージ
この例で作成する myConfig という名前のメンテナンス構成は、スコープが osimage
で、スケジュールされた期間は 5 日ごとに 8 時間です。 このスコープに対するスケジュールの duration
の値は、5 時間以上にする必要があります。 このスコープでは、スケジュールの繰り返しを最大 7 日にできます。
$RGName = "myMaintenanceRG"
$configName = "myConfig"
$scope = "osimage"
$location = "eastus"
$timeZone = "Pacific Standard Time"
$duration = "08:00"
$startDateTime = "2022-11-01 00:00"
$recurEvery = "5days"
パラメータを定義したら、New-AzMaintenanceConfiguration
コマンドレットを使って構成を作成できます。
New-AzMaintenanceConfiguration
-ResourceGroup $RGName `
-Name $configName `
-MaintenanceScope $scope `
-Location $location `
-StartDateTime $startDateTime `
-TimeZone $timeZone `
-Duration $duration `
-RecurEvery $recurEvery
ゲスト
メンテナンス構成機能に追加された最新の機能は、InGuestPatch
スコープです。 この例では、Azure PowerShell を使ってゲスト スコープのメンテナンス構成を作成する方法を示します。 このスコープについて詳しくは、「ゲスト」をご覧ください。
$RGName = "myMaintenanceRG"
$configName = "myConfig"
$scope = "InGuestPatch"
$location = "eastus"
$timeZone = "Pacific Standard Time"
$duration = "04:00"
$startDateTime = "2022-11-01 00:00"
$recurEvery = "Week Saturday, Sunday"
$WindowsParameterClassificationToInclude = "FeaturePack","ServicePack";
$WindowParameterKbNumberToInclude = "KB123456","KB123466";
$WindowParameterKbNumberToExclude = "KB123456","KB123466";
$RebootOption = "IfRequired";
$LinuxParameterClassificationToInclude = "Other";
$LinuxParameterPackageNameMaskToInclude = "apt","httpd";
$LinuxParameterPackageNameMaskToExclude = "ppt","userpk";
パラメータを定義したら、New-AzMaintenanceConfiguration
コマンドレットを使って構成を作成できます。
New-AzMaintenanceConfiguration
-ResourceGroup $RGName `
-Name $configName `
-MaintenanceScope $scope `
-Location $location `
-StartDateTime $startDateTime `
-TimeZone $timeZone `
-Duration $duration `
-RecurEvery $recurEvery `
-WindowParameterClassificationToInclude $WindowsParameterClassificationToInclude `
-WindowParameterKbNumberToInclude $WindowParameterKbNumberToInclude `
-WindowParameterKbNumberToExclude $WindowParameterKbNumberToExclude `
-InstallPatchRebootSetting $RebootOption `
-LinuxParameterPackageNameMaskToInclude $LinuxParameterPackageNameMaskToInclude `
-LinuxParameterClassificationToInclude $LinuxParameterClassificationToInclude `
-LinuxParameterPackageNameMaskToExclude $LinuxParameterPackageNameMaskToExclude `
-ExtensionProperty @{"InGuestPatchMode"="User"}
同じ名前の構成を別の場所に作成しようとすると、エラーが発生します。 構成名は、リソース グループに対して一意である必要があります。
Get-AzMaintenanceConfiguration を使って、メンテナンス構成が正常に作成されたかどうかを確認できます。
Get-AzMaintenanceConfiguration | Format-Table -Property Name,Id
構成を割り当てる
構成を作成した後、Azure PowerShell を使ってそれにマシンを割り当てることもできます。 New-AzConfigurationAssignment コマンドレットを使用できます。
分離された VM
構成の ID を使って、構成を VM に割り当てます。 -ResourceType VirtualMachines
を指定します。 -ResourceName
には VM の名前を指定し、-ResourceGroupName
には VM のリソース グループを指定します。
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
専用ホスト
専用ホストに構成を適用するには、-ResourceType hosts
、ホスト グループの名前を指定した -ResourceParentName
、-ResourceParentType hostGroups
を含める必要があります。
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName myHostGroup `
-ResourceParentType hostGroups `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
仮想マシン スケール セット
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
ゲスト
New-AzConfigurationAssignment `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myGuest" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" `
-ConfigurationAssignmentName "configName" `
-MaintenanceConfigurationId "configID"
保留中の更新プログラムを確認する
保留中の更新プログラムを調べるには、Get-AzMaintenanceUpdate を使います。 ログインしているものとは異なる VM の Azure サブスクリプションを指定するには、-subscription
を使います。
表示する更新プログラムがない場合、このコマンドは何も返しません。 それ以外の場合は、PSApplyUpdate
オブジェクトを返します。
{
"maintenanceScope": "Host",
"impactType": "Freeze",
"status": "Pending",
"impactDurationInSec": 9,
"notBefore": "2020-02-21T16:47:44.8728029Z",
"properties": {
"resourceId": "/subscriptions/39c6cced-4d6c-4dd5-af86-57499cd3f846/resourcegroups/Ignite2019/providers/Microsoft.Compute/virtualMachines/MCDemo3"
}
分離された VM
分離された VM の保留中の更新プログラムを確認します。 この例では、読みやすいように出力を表形式で示しています。
Get-AzMaintenanceUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" | Format-Table
専用ホスト
専用ホストの保留中の更新プログラムを確認します。 この例では、読みやすいように出力を表形式で示しています。
Get-AzMaintenanceUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName "myHostGroup" `
-ResourceParentType "hostGroups" `
-ProviderName "Microsoft.Compute" | Format-Table
仮想マシン スケール セット
Get-AzMaintenanceUpdate `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute" | Format-Table
更新プログラムの適用
New-AzApplyUpdate を使用して、保留中の更新プログラムを適用します。 更新の呼び出しの適用は、完了するまでに最大で 2 時間かかる場合があります。
このコマンドレットは、ホストと OS イメージのスコープに対してのみ機能します。 ゲスト スコープでは機能しません。
分離された VM
分離された VM に更新プログラムを適用する要求を作成します。
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute"
成功した場合、このコマンドは PSApplyUpdate
オブジェクトを返します。 この記事で後ほど説明するように、Get-AzApplyUpdate
コマンドの Name
属性を使って、更新プログラムの状態を確認できます。
専用ホスト
専用ホストに更新プログラムを適用します。
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName "myHostGroup" `
-ResourceParentType "hostGroups" `
-ProviderName Microsoft.Compute
仮想マシン スケール セット
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute"
更新プログラムの状態の確認
更新プログラムの状態を調べるには、Get-AzApplyUpdate を使います。 次のコマンドでは、-ApplyUpdateName
パラメータに default
を使って、最新の更新プログラムの状態を表示しています。 更新プログラムの名前を置き換えて (New-AzApplyUpdate コマンドによって返されます)、特定の更新プログラムの状態を取得できます。
このコマンドレットは、ホストと OS イメージのスコープに対してのみ機能します。 ゲスト スコープでは機能しません。
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
特定の仮想マシンの更新プログラムを確認します。
Get-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myVM" `
-ResourceType "VirtualMachines" `
-ProviderName "Microsoft.Compute" `
-ApplyUpdateName "applyUpdateName"
専用ホスト
専用ホストの更新プログラムを確認します。
Get-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-ResourceName "myHost" `
-ResourceType "hosts" `
-ResourceParentName "myHostGroup" `
-ResourceParentType "hostGroups" `
-ProviderName "Microsoft.Compute" `
-ApplyUpdateName "applyUpdateName"
仮想マシン スケール セット
New-AzApplyUpdate `
-ResourceGroupName "myResourceGroup" `
-Location "eastus" `
-ResourceName "myVMSS" `
-ResourceType "VirtualMachineScaleSets" `
-ProviderName "Microsoft.Compute" `
-ApplyUpdateName "applyUpdateName"
メンテナンス構成を削除する
メンテナンス構成を削除するには、Remove-AzMaintenanceConfiguration を使います。
Remove-AzMaintenanceConfiguration `
-ResourceGroupName "myResourceGroup" `
-Name "configName"
次のステップ
詳しくは、「Azure での仮想マシンのメンテナンス」をご覧ください。