유지 관리 구성 및 Azure PowerShell을 사용하여 업데이트 제어

적용 대상: ✔️ Linux VM ✔️ Windows VM ✔️ 유연한 확장 집합 ✔️ 균일한 확장 집합

유지 관리 구성 기능을 사용하여 다양한 Azure 리소스에 플랫폼 업데이트를 적용할 시기를 제어할 수 있습니다. 이 문서에서는 전용 호스트 및 격리된 VM(가상 머신)에 대한 Azure PowerShell 옵션을 다룹니다. 유지 관리 구성 기능 사용 시 이점, 제한 사항, 기타 관리 옵션에 대한 자세한 내용은 유지 관리 구성으로 플랫폼 업데이트 관리를 참조하세요.

확장 집합의 유지 관리 구성을 사용하는 방법에 대한 정보를 찾으려면 Azure Virtual Machine Scale Sets에 대한 유지 관리 제어를 참조하세요.

Important

특정 범위는 특정 컴퓨터 형식과 일정을 지원합니다. 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를 입력하거나 모두 예를 선택합니다.

유지 관리 구성을 만듭니다.

유지 관리 구성을 만드는 첫 단계는 구성에 대한 컨테이너로 리소스 그룹을 만드는 것입니다. 이 예에서는 eastusmyMaintenanceRG라는 리소스 그룹을 만듭니다. 사용하려는 리소스 그룹이 이미 있는 경우 이 부분을 건너뛰고 나머지 예제에서는 리소스 그룹 이름을 고유한 이름으로 바꿀 수 있습니다.

New-AzResourceGroup `
   -Location eastus `
   -Name myMaintenanceRG

Azure가 리소스에서 업데이트를 반복 적용하는 예약된 기간을 선언할 수 있습니다. 예약된 기간을 만든 후에는 더 이상 수동으로 업데이트를 적용하지 않아도 됩니다.

유지 관리 되풀이를 매일, 매주 또는 매월로 표현할 수 있습니다. 다음 몇 가지 예를 참조하세요.

  • 매일: "Day" 또는 "3Days"RecurEvery 값입니다.
  • 매주: "3Weeks" 또는 "Week Saturday,Sunday"RecurEvery 값입니다.
  • 매월: "Month day23,day24", "Month Last Sunday" 또는 "Month Fourth Monday"RecurEvery 값입니다.

Host

이 예에서는 매월 네 번째 월요일에 예약된 기간 5시간 동안 Host로 범위가 지정된 myConfig라는 유지 관리 구성을 만듭니다. 이 범위에 대한 일정의 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 cmdlet을 사용하여 구성을 만들 수 있습니다.

New-AzMaintenanceConfiguration
   -ResourceGroup $RGName `
   -Name $configName `
   -MaintenanceScope $scope `
   -Location $location `
   -StartDateTime $startDateTime `
   -TimeZone $timeZone `
   -Duration $duration `
   -RecurEvery $recurEvery

$scope = "Host"를 사용하면 유지 관리 구성이 호스트 머신 업데이트를 제어하는 데 사용됩니다. 대상으로 삼는 특정 컴퓨터 범위에 대한 구성을 만들어야 합니다. 범위에 대해 자세히 알아보세요.

OS 이미지

이 예에서는 5일마다 8시간의 예약 기간을 사용하여 osimage로 범위가 지정된 myConfig라는 유지 관리 구성을 만듭니다. 이 범위에 대한 일정의 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 cmdlet을 사용하여 구성을 만들 수 있습니다.

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 cmdlet을 사용하여 구성을 만들 수 있습니다.

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 cmdlet을 사용할 수 있습니다.

격리된 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를 사용합니다. 로그인한 구독과 다른 경우 -subscription을 사용하여 VM의 Azure 구독을 지정합니다.

표시할 업데이트가 없으면 이 명령은 아무것도 반환하지 않습니다. 그렇지 않으면 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시간이 걸릴 수 있습니다.

이 cmdlet은 호스트 및 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 명령으로 반환됨)을 대체하여 특정 업데이트의 상태를 가져올 수 있습니다.

이 cmdlet은 호스트 및 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의 가상 머신 유지 관리를 참조하세요.