Partilhar via


Controle atualizações com as Configurações de Manutenção e a CLI do Azure

Aplica-se a: ✔️ VMs ✔️ Linux VMs ✔️ do Windows Conjuntos ✔️ de escala flexíveis Conjuntos de balanças 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 da CLI do Azure para usar esse recurso. Para obter mais informações sobre os benefícios do uso de configurações de manutenção, suas limitações e outras opções de gerenciamento, consulte Gerenciando atualizações de plataforma com configurações de manutenção.

Importante

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

Criar uma configuração de manutenção

A primeira etapa na criação de uma configuração de manutenção é criar um grupo de recursos como um contêiner para sua configuração. Este exemplo cria um grupo de recursos chamado myMaintenanceRG no eastus. Se você já tiver um grupo de recursos que deseja usar, poderá ignorar essa parte e substituir o nome do grupo de recursos pelo seu próprio no restante dos 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.

Host

Este exemplo cria uma configuração de manutenção chamada myConfig com escopo para máquinas host, com uma janela agendada 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" 

O uso --maintenance-scope host garante que a configuração de manutenção seja usada para controlar as atualizações da infraestrutura do host. Se você tentar criar uma configuração com o mesmo nome, mas em um local diferente, receberá um erro. Os nomes de configuração devem ser exclusivos para o seu grupo de recursos.

Para verificar se você criou com êxito a configuração de manutenção, você 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 

Você pode expressar a recorrência de manutenção como diária, semanal ou mensal. Seguem-se alguns exemplos:

  • Diário: Um maintenance-window-recur-every valor de "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" Month Fourth Mondayou .

Conjuntos de dimensionamento de máquinas virtuais

Este exemplo cria uma configuração de manutenção chamada myConfig com o escopo da imagem do sistema operacional para conjuntos de escala de máquina virtual, com uma janela agendada 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 convidadas

Este exemplo cria uma configuração de manutenção chamada myConfig com escopo para máquinas convidadas (VMs e servidores habilitados para Azure Arc), com uma janela agendada 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 de host isolada usando a 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-groupe o local 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, você precisa 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 host. Você pode usar az-vm-host-get-instance-view para obter a 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 dimensionamento 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 convidadas

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

Você pode verificar se a configuração foi aplicada corretamente ou verificar qual configuração é aplicada no momento, 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 dimensionamento de máquinas virtuais

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

VMs convidadas

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

Verificar se há atualizações pendentes

Use az maintenance update list para ver se há atualizações pendentes. Atualize --subscription para ser a ID da assinatura que contém a VM.

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

Se houver atualizações, o comando retornará apenas uma, mesmo que várias atualizações estejam pendentes. Os dados para esta atualização são retornados em um objeto:

[
  {
    "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 isolada

Verifique se há atualizações pendentes para uma VM isolada. Neste exemplo, a saída é formatada como uma tabela para 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 host dedicado. Neste exemplo, a saída é formatada como uma tabela para legibilidade. Substitua os valores dos recursos pelos seus.

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

Aplicar atualizações

Use az maintenance apply update para aplicar atualizações pendentes. Se for bem-sucedido, esse comando retornará JSON que contém os detalhes da atualização. As chamadas para aplicar atualizações podem levar até 2 horas para serem concluídas.

VM isolada

Crie uma solicitação 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 host 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 dimensionamento de máquinas virtuais

Aplicar 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

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

Você pode verificar o progresso das atualizações usando az maintenance applyupdate get.

Para ver os resultados da última atualização, use default como o nome da atualização. Ou substitua myUpdateName pelo nome da atualização que foi retornada quando você executou az maintenance applyupdate createo .

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 é o momento em que a atualização terminou, quer tenha iniciado a atualização ou a plataforma a tenha iniciado porque não utilizou a janela de automanutenção. Se uma atualização nunca foi aplicada por meio de Configurações de Manutenção, LastUpdateTime mostra o valor padrão.

VM isolada

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

Anfitrião dedicado

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

Conjuntos de dimensionamento de máquinas virtuais

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

Excluir uma configuração de manutenção

Para excluir uma configuração de manutenção, use az maintenance configuration delete. A exclusão da configuração remove o controle 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.