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

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

유지 관리 구성을 사용하면 다양한 Azure 리소스에 플랫폼 업데이트를 적용할 시기를 결정할 수 있습니다. 이 토픽에서는 이 서비스를 사용하기 위한 Azure CLI 옵션을 다룹니다. 유지 관리 구성 사용의 이점, 제한 사항 및 기타 관리 옵션에 관한 자세한 내용은 유지 관리 구성을 사용하여 플랫폼 업데이트 관리를 참조하세요.

중요

특정 머신 유형 및 일정을 지원하는 다양한 범위가 있으므로 가상 머신에 적합한 범위를 선택해야 합니다.

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

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

az group create \
   --location eastus \
   --name myMaintenanceRG

리소스 그룹을 만든 후 az maintenance configuration create를 사용하여 유지 관리 구성을 만듭니다.

호스트

이 예제에서는 매월 네 번째 월요일에 예약된 기간 5시간 동안 호스트 머신으로 범위가 지정된 myConfig라는 유지 관리 구성을 만듭니다.

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: “일” 또는 “3일”
  • 매주 - maintenance-window-recur-every: “3주” 또는 “주 토요일, 일요일”
  • 매월 - maintenance-window-recur-every: “월 23일, 24일” 또는 “월 마지막 일요일” 또는 “월 4번째 월요일”

Virtual Machine Scale Sets

이 예제에서는 매월 네 번째 월요일에 예약된 기간 5시간 동안 Virtual Machine Scale Sets에 대한 osimage 범위의 myConfig라는 유지 관리 구성을 만듭니다.

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

이 예제에서는 예약된 기간이 20일마다 2시간인 게스트 머신(VM 및 Arc 지원 서버)으로 범위가 지정된 myConfig라는 유지 관리 구성을 만듭니다. 게스트 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 

Virtual Machine Scale Sets

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

Virtual Machine Scale Sets

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 텍스트를 포함하는 오류 메시지를 반환합니다.

업데이트가 있는 경우 보류 중인 업데이트가 여러 개 있더라도 하나만 반환됩니다. 이 업데이트의 데이터는 개체로 반환됩니다.

[
  {
    "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} \
   --resourcegroup myMaintenanceRg \
   --resource-name myVM \
   --resource-type virtualMachines \
   --provider-name Microsoft.Compute \
   --output table

전용 호스트

전용 호스트에 대한 보류 중인 업데이트를 확인합니다. 이 예제에서 가독성을 위해 출력이 테이블 형식으로 지정됩니다. 리소스에 대한 값을 고유한 값으로 대체합니다.

az maintenance update list \
   --subscription {subscription ID} \
   --resourcegroup 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

Virtual Machine Scale Sets

확장 집합에 업데이트 적용

az maintenance applyupdate create \
   --subscription {subscriptionID} \
   --resource-group myMaintenanceRG \
   --resource-name myVMSS \
   --resource-type virtualMachineScaleSets \
   --provider-name Microsoft.Compute

업데이트 적용 상태를 확인합니다.

az maintenance applyupdate get을 사용하여 업데이트 진행률을 확인할 수 있습니다.

default를 업데이트 이름으로 사용하여 마지막 업데이트의 결과를 확인하거나, myUpdateNameaz 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은 셀프 유지 관리 기간이 사용되지 않은 경우 사용자 또는 플랫폼에 의해 시작된 업데이트가 완료된 시간입니다. 유지 관리 제어를 통해 업데이트를 적용한 적이 없는 경우 기본값을 보여줍니다.

격리된 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

Virtual Machine Scale Sets

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

다음 단계

자세히 알아보려면 유지 관리 및 업데이트를 참조하세요.