다음을 통해 공유


Azure VM에 대한 업데이트를 프로그래밍 방식으로 관리하는 방법

이 문서에서는 Azure REST API를 사용하여 Azure에서 Azure 업데이트 관리자를 통해 Azure 가상 머신에서 평가 및 업데이트 배포를 트리거하는 프로세스를 안내합니다. 업데이트 관리자를 처음 사용하고 자세히 알아보려면 Azure 업데이트 관리자 개요를 참조하세요. Azure REST API를 사용하여 Arc 지원 서버를 관리하려면 Arc 지원 서버를 프로그래밍 방식으로 사용하는 방법을 참조하세요.

Azure의 Azure 업데이트 관리자를 사용하면 프로그래밍 방식으로 액세스하기 위해 Azure REST API를 사용할 수 있습니다. 또한 Azure PowerShellAzure CLI에서 적절한 REST 명령을 사용할 수 있습니다.

Azure VM을 관리하는 Azure REST API에 대한 지원은 업데이트 관리자 가상 머신 확장을 통해 사용할 수 있습니다.

업데이트 평가

Azure VM에서 업데이트 평가를 트리거하려면 다음 POST 요청을 지정합니다.

POST on `subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.Compute/virtualMachines/virtualMachineName/assessPatches?api-version=2020-12-01`

POST 요청을 지정하려면 Azure CLI az vm assess-patches 명령을 사용할 수 있습니다.

az vm assess-patches -g MyResourceGroup -n MyVm

업데이트 배포

Azure VM에 대한 업데이트 배포를 트리거하려면 다음 POST 요청을 지정합니다.

POST on `subscriptions/subscriptionId/resourceGroups/resourceGroupName/providers/Microsoft.Compute/virtualMachines/virtualMachineName/installPatches?api-version=2020-12-01`

요청 본문

다음 표에서는 요청 본문의 요소에 대해 설명합니다.

속성 설명
maximumDuration 작업이 실행되는 최대 시간입니다. PT4H(4시간)와 같은 ISO 8601 규격 기간 문자열이어야 합니다.
rebootSetting 머신을 다시 부팅해야 하는지 여부와 게스트 OS 업데이트 설치를 완료해야 하는지 여부를 표시하는 플래그입니다. 허용되는 값: IfRequired, NeverReboot, AlwaysReboot
windowsParameters 지원되는 Microsoft Windows Server 운영 체제를 실행하는 Azure VM의 게스트 OS 업데이트에 대한 매개 변수 옵션입니다.
windowsParameters - classificationsToInclude 컴퓨터에 설치할 업데이트를 선택하는 데 사용할 범주/분류 목록입니다. 허용되는 값: Critical, Security, UpdateRollUp, FeaturePack, ServicePack, Definition, Tools, Updates
windowsParameters - kbNumbersToInclude 설치해야 하는 Windows 업데이트 KB ID 목록입니다. classificationsToInclude 목록에 제공된 분류에 속하는 모든 업데이트가 설치됩니다. kbNumbersToInclude는 분류와 함께 설치할 특정 KB의 선택적 목록입니다. 예: 1234
windowsParameters - kbNumbersToExclude 설치하지 않아야 하는 Windows 업데이트 KB ID 목록입니다. 이 매개 변수는 windowsParameters - classificationsToInclude를 재정의합니다. 즉, 여기에 지정된 Windows 업데이트 KB ID는 classificationsToInclude 매개 변수에서 제공된 분류에 속하는 경우에도 설치되지 않습니다.
maxPatchPublishDate 이는 지정된 최대 게시 날짜 또는 그 이전에 게시된 패치를 설치하는 데 사용됩니다.
linuxParameters 지원되는 Linux 서버 운영 체제를 실행하는 Azure VM의 게스트 OS 업데이트에 대한 매개 변수 옵션입니다.
linuxParameters - classificationsToInclude 컴퓨터에 설치할 업데이트를 선택하는 데 사용할 범주/분류 목록입니다. 허용되는 값: Critical, Security, Other
linuxParameters - packageNameMasksToInclude 설치해야 하는 Linux 패키지 목록입니다. classificationsToInclude 목록에 제공된 분류에 속하는 모든 업데이트가 설치됩니다. packageNameMasksToInclude는 분류와 함께 설치할 패키지 이름의 선택적 목록입니다. 예: mysql, libc=1.0.1.1, kernel*
linuxParameters - packageNameMasksToExclude 설치하지 않아야 하는 업데이트 목록입니다. 이 매개 변수는 linuxParameters - packageNameMasksToExclude를 재정의합니다. 즉, 여기에 지정된 패키지는 classificationsToInclude 매개 변수에서 제공된 분류에 속하는 경우에도 설치되지 않습니다.

POST 요청을 지정하려면 유효한 매개 변수 및 값과 함께 다음 Azure REST API 호출을 사용할 수 있습니다.

POST on 'subscriptions/{subscriptionId}/resourceGroups/acmedemo/providers/Microsoft.Compute/virtualMachines/ameacr/installPatches?api-version=2020-12-01

{
    "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 형식). 기간은 해당 표준 시간대에 따라 일광 절약 시간제로 제공된 표준 시간대에 만들어집니다. 만료 날짜는 미래 날짜로 설정해야 합니다. 제공되지 않을 경우 최대 날짜/시간인 9999-12-31 23:59:59로 설정됩니다.
properties.maintenanceWindow.recurEvery 유지 관리 기간이 반복되어야 하는 속도입니다. 속도는 일별, 주별 또는 월별 일정으로 표시될 수 있습니다. 일별 일정은 recurEvery: [Frequency as integer]['Day(s)'] 형식으로 지정됩니다. 빈도가 제공되지 않으면 기본 빈도는 1입니다. 일별 일정의 예는 recurEvery: Day, recurEvery: 3Days입니다. 주별 일정은 recurEvery: [Frequency as integer]['Week(s)'] [선택적 쉼표로 구분된 평일 목록 Monday-Sunday] 형식으로 지정됩니다. 주별 일정의 예제는 recurEvery: 3Weeks, recurEvery: Week Saturday, Sunday입니다. 월별 일정은 [Frequency as integer]['Month(s)'] [쉼표로 구분된 월 일 목록] 또는 [Frequency as integer]['Month(s)'] [Week of Month (First, Second, Third, Fourth, Last)] [Weekday 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()를 실행하여 가져올 수 있습니다. 예: Standard Time, UTC, W. Europe Standard Time, Korea Standard Time, Cen. Australia Standard Time
properties.namespace 리소스의 네임스페이스를 가져오거나 설정합니다.
properties.visibility 구성의 표시 유형을 가져오거나 설정합니다. 기본값은 'Custom'입니다.
systemData createdBy 및 modifiedBy 정보가 포함된 Azure Resource Manager 메타데이터입니다.
tags 리소스의 태그를 가져오거나 설정합니다.
type 리소스 종류

POST 요청을 지정하려면 유효한 매개 변수 및 값과 함께 다음 Azure REST API 호출을 사용할 수 있습니다.

PUT on '/subscriptions/0f55bb56-6089-4c7e-9306-41fb78fc5844/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/0f55bb56-6089-4c7e-9306-41fb78fc5844/resourceGroups/atscalepatching/providers/Microsoft.Compute/virtualMachines/win-atscalepatching-1/providers/Microsoft.Maintenance/configurationAssignments/TestAzureInGuestAdv?api-version=2021-09-01-preview

{
  "properties": {
    "maintenanceConfigurationId": "/subscriptions/0f55bb56-6089-4c7e-9306-41fb78fc5844/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`

다음 단계