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

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

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

Important

특정 범위는 특정 컴퓨터 형식과 일정을 지원합니다. VM(가상 머신)에 적합한 범위를 선택해야 합니다.

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

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

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

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

Host

이 예에서는 매월 네 번째 월요일에 예약된 기간 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 

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

  • 매일: "Day" 또는 "3Days"maintenance-window-recur-every 값입니다.
  • 매주: "3Weeks" 또는 "Week Saturday,Sunday"maintenance-window-recur-every 값입니다.
  • 매월: "Month day23,day24", "Month Last Sunday" 또는 Month Fourth Mondaymaintenance-window-recur-every 값입니다.

가상 머신 크기 집합

이 예에서는 매월 네 번째 월요일에 예약된 기간 5시간 동안 Virtual Machine Scale Sets에 대한 OS 이미지 범위의 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 및 Azure 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 

가상 머신 크기 집합

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를 사용하여 보류 중인 업데이트가 있는지 확인합니다. VM이 포함된 구독의 ID가 되도록 --subscription을 업데이트합니다.

업데이트가 없으면 명령은 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

가상 머신 크기 집합

확장 집합에 업데이트를 적용합니다.

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의 가상 머신 유지 관리를 참조하세요.