Partilhar via


Atualizações de controlo com Configurações de Manutenção e o Azure CLI

Aplica-se a: ✔️ Máquinas Virtuais (VMs) Linux ✔️ Máquinas Virtuais (VMs) Windows ✔️ Conjuntos de escala flexíveis ✔️ Conjuntos de escala uniformes

Você pode usar o recurso Configurações de Manutenção para controlar quando aplicar atualizações de plataforma a vários recursos do Azure. Este artigo aborda as opções de CLI do Azure para utilizar esta funcionalidade. Para mais informações sobre os benefícios de utilizar Configurações de Manutenção, as suas limitações e outras opções de gestão, consulte Gerir atualizações de plataforma com Configurações de Manutenção.

Important

Escopos específicos suportam determinados tipos de máquinas e cronogramas. Certifique-se de selecionar o escopo certo para a sua máquina virtual (VM).

Criar uma configuração de manutenção

O primeiro passo para criar uma configuração de manutenção é criar um grupo de recursos como contentor para a sua configuração. Este exemplo cria um grupo de recursos chamado myMaintenanceRG em eastus. Se já tens um grupo de recursos que queres usar, podes saltar esta parte e substituir o nome do grupo de recursos pelo teu próprio nos restantes exemplos.

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

Depois de criar o grupo de recursos, use az maintenance configuration create para criar uma configuração de manutenção.

Anfitrião

Este exemplo cria uma configuração de manutenção chamada myConfig com âmbito para as máquinas anfitriãs, com uma janela programada de 5 horas na quarta segunda-feira de cada mês:

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" 

A utilização --maintenance-scope host garante que a configuração de manutenção é usada para controlar as atualizações da infraestrutura anfitriã. Se tentares criar uma configuração com o mesmo nome mas numa localização diferente, vais receber um erro. Os nomes de configuração devem ser exclusivos para o seu grupo de recursos.

Para verificar se criou com sucesso a configuração de manutenção, pode consultar as configurações de manutenção disponíveis usando az maintenance configuration list:

az maintenance configuration list 
   --query "[].{Name:name, ID:id}" 
   --output table 

Pode indicar a recorrência da manutenção como sendo diária, semanal ou mensal. Eis alguns exemplos:

  • Diário: Valor de maintenance-window-recur-every, "Day" ou "3Days".
  • Semanal: Um maintenance-window-recur-every valor de "3Weeks" ou "Week Saturday,Sunday".
  • Mensal: Um maintenance-window-recur-every valor de "Month day23,day24" ou "Month Last Sunday" ou Month Fourth Monday.

Conjuntos de escala de máquinas virtuais

Este exemplo cria uma configuração de manutenção chamada myConfig com o escopo da imagem do SO para conjuntos de escala de máquinas virtuais, com uma janela programada de 5 horas na quarta segunda-feira de cada mês:

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" 

VMs convidados

Este exemplo cria uma configuração de manutenção chamada myConfig com escopo para máquinas convidadas (VMs e servidores com compatibilidade Azure Arc), com uma janela programada de 2 horas a cada 20 dias. Saiba mais sobre configurações de manutenção em VMs convidadas.

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"

Atribuir a configuração

Use az maintenance assignment create para atribuir a configuração à sua máquina.

VM isolada

Aplique a configuração a uma VM host isolada usando o ID da configuração. Especifique --resource-type virtualMachines. Forneça o nome da VM para --resource-name, o grupo de recursos da VM para --resource-group, e a localização da VM para --location.

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"

Anfitrião dedicado

Para aplicar uma configuração a um host dedicado, é necessário incluir --resource-type hosts, --resource-parent-name com o nome do grupo de hosts, e --resource-parent-type hostGroups.

O parâmetro --resource-id é o ID do anfitrião. Pode usar az-vm-host-get-instance-view para obter o ID do seu host dedicado.

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 

Conjuntos de escala de máquinas virtuais

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"

VMs convidados

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"

Verifique a configuração

Pode verificar se a configuração foi aplicada corretamente, ou verificar qual configuração está atualmente aplicada, usando az maintenance assignment list.

VM isolada

az maintenance assignment list \
   --provider-name Microsoft.Compute \
   --resource-group myMaintenanceRG \
   --resource-name myVM \
   --resource-type virtualMachines \
   --query "[].{resource:resourceGroup, configName:name}" \
   --output table

Anfitrião dedicado

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

Conjuntos de escala de máquinas virtuais

az maintenance assignment list \
   --provider-name Microsoft.Compute \
   --resource-group myMaintenanceRG \
   --resource-name myVMSS \
   --resource-type "virtualMachineScaleSets" \
   --query "[].{resource:resourceGroup, configName:name}" \
   --output table

VMs convidados

az maintenance assignment list \
   --provider-name Microsoft.Compute \
   --resource-group myMaintenanceRG \
   --resource-name myVM \
   --resource-type virtualMachines \
   --query "[].{resource:resourceGroup, configName:name}" \
   --output table

Verifique se há atualizações pendentes

Uso az maintenance update list para ver se há atualizações pendentes. Atualize --subscription para que seja o ID da subscrição que contém a VM.

Se não houver atualizações, o comando devolve uma mensagem de erro que contém o texto Resource not found...StatusCode: 404.

Se houver atualizações, o comando devolve apenas uma, mesmo que haja várias atualizações pendentes. Os dados desta atualização são devolvidos num objeto:

[
  {
    "impactDurationInSec": 9,
    "impactType": "Freeze",
    "maintenanceScope": "Host",
    "notBefore": "2020-03-03T07:23:04.905538+00:00",
    "resourceId": "/subscriptions/a0a0a0a0-bbbb-cccc-dddd-e1e1e1e1e1e1/resourcegroups/DemoRG/providers/Microsoft.Compute/hostGroups/demoHostGroup/hosts/myHost",
    "status": "Pending"
  }
]

VM isolada

Verifique se há atualizações pendentes para uma VM isolada. Neste exemplo, a saída é formatada como uma tabela de legibilidade:

az maintenance update list \
   --subscription {subscription ID} \
   --resource-group myMaintenanceRg \
   --resource-name myVM \
   --resource-type virtualMachines \
   --provider-name Microsoft.Compute \
   --output table

Anfitrião dedicado

Verifique se há atualizações pendentes para um anfitrião dedicado. Neste exemplo, a saída está formatada como uma tabela para legibilidade. Substitui os valores dos recursos pelos teus próprios.

az maintenance update list \
   --subscription {subscription ID} \
   --resource-group myHostResourceGroup \
   --resource-name myHost \
   --resource-type hosts \
   --provider-name Microsoft.Compute \
   --resource-parent-name myHostGroup \
   --resource-parent-type hostGroups \
   --output table

Aplicar atualizações

Uso az maintenance apply update para aplicar atualizações pendentes. Em caso de sucesso, este comando devolve JSON que contém os detalhes da atualização. As chamadas para atualizações de candidatura podem demorar até 2 horas a ser concluídas.

VM isolada

Crie um pedido para aplicar atualizações a uma VM isolada:

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

Anfitrião dedicado

Aplique atualizações a um anfitrião dedicado:

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

Conjuntos de escala de máquinas virtuais

Aplique atualizações a um conjunto de escalas:

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

Verifique o estado da aplicação de atualizações

Pode verificar o progresso das atualizações usando az maintenance applyupdate show.

Para ver os resultados da última atualização, use default como nome da atualização. Ou substituir myUpdateName pelo nome da atualização que foi devolvida quando executaste az maintenance applyupdate create.

Status         : Completed
ResourceId     : /subscriptions/b1b1b1b1-cccc-dddd-eeee-f2f2f2f2f2f2/resourcegroups/TestShantS/providers/Microsoft.Comp
ute/virtualMachines/DXT-test-04-iso
LastUpdateTime : 1/1/2020 12:00:00 AM
Id             : /subscriptions/b1b1b1b1-cccc-dddd-eeee-f2f2f2f2f2f2/resourcegroups/TestShantS/providers/Microsoft.Comp
ute/virtualMachines/DXT-test-04-iso/providers/Microsoft.Maintenance/applyUpdates/default
Name           : default
Type           : Microsoft.Maintenance/applyUpdates

LastUpdateTime é o momento em que a atualização terminou, quer tu a iniciaste ou a plataforma a iniciou porque não usaste a janela de automanutenção. Se uma atualização nunca foi aplicada através das Configurações de Manutenção, LastUpdateTime mostra o valor predefinido.

VM isolada

az maintenance applyupdate show \
   --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

Anfitrião dedicado

az maintenance applyupdate show \
   --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

Conjuntos de escala de máquinas virtuais

az maintenance applyupdate show \
   --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

Eliminar uma configuração de manutenção

Para eliminar uma configuração de manutenção, use az maintenance configuration delete. Eliminar a configuração remove o controlo de manutenção dos recursos associados.

az maintenance configuration delete \
   --subscription 1111abcd-1a11-1a2b-1a12-123456789abc \
   -resource-group myResourceGroup \
   --resource-name myConfig

Próximos passos

Para saber mais, consulte Manutenção para máquinas virtuais no Azure.