Atualização Automática de Extensão para VMs e Conjuntos de Dimensionamento no Azure

Uma Atualização Automática de Extensão está disponível para VMs do Azure e Conjuntos de Dimensionamento de Máquinas Virtuais do Azure. Quando a Atualização Automática de Extensão está habilitada em uma VM ou conjunto de dimensionamento, a extensão é atualizada automaticamente sempre que o editor de extensão libera uma nova versão para essa extensão.

A Atualização Automática de Extensão tem os seguintes recursos:

  • É compatível com VMs do Azure e Conjuntos de Dimensionamento de Máquinas Virtuais do Azure.
  • As atualizações são aplicadas em um modelo de implantação com priorização de disponibilidade.
  • Para um Conjunto de Dimensionamento de Máquinas Virtuais, não mais do que 20% das máquinas virtuais do conjunto de dimensionamento são atualizadas cada lote. O tamanho mínimo do lote é uma máquina virtual.
  • Funciona para todos os tamanhos de VM e para extensões Windows e Linux.
  • Você pode recusar as atualizações automáticas a qualquer momento.
  • A atualização de extensão automática pode ser habilitada em um Conjuntos de Dimensionamento de Máquinas Virtuais de qualquer tamanho.
  • Cada extensão compatível é inscrita individualmente e você pode escolher quais extensões serão atualizadas automaticamente.
  • É compatível com todas as regiões de nuvem pública.

Como funciona a Atualização Automática de Extensão?

O processo de atualização de extensão substitui a versão de extensão existente em uma VM por uma nova versão da mesma extensão quando publicada pelo editor da extensão. A integridade da VM é monitorada depois que a nova extensão for instalada. Se a VM não estiver em um estado de integridade dentro de 5 minutos após a conclusão da atualização, a versão da extensão será revertida para a versão anterior.

Uma atualização de extensão com falha é automaticamente repetida. Uma nova tentativa é repetida a cada poucos dias automaticamente sem intervenção do usuário.

Atualizações com priorização de disponibilidade

O modelo com priorização de disponibilidade para atualizações orquestradas da plataforma garantirá que as configurações de disponibilidade no Azure sejam respeitadas em vários níveis de disponibilidade.

Em um grupo de máquinas virtuais que passa por uma atualização, a plataforma do Azure orquestra as atualizações:

Entre regiões:

  • Uma atualização se move entre o Azure globalmente em fases para evitar falhas de implantação em todo o Azure.
  • Uma “fase” pode ter uma ou mais regiões e uma atualização progride entre as fases somente se as VMs qualificadas em uma fase forem atualizadas com êxito.
  • Regiões emparelhadas geograficamente não serão atualizadas simultaneamente e não poderão estar na mesma fase regional.
  • O sucesso de uma atualização é medido pelo acompanhamento da integridade de uma VM após a atualização. A integridade da VM é acompanhada usando os indicadores de integridade da plataforma para a VM. Para Conjuntos de Dimensionamento de Máquinas Virtuais, a integridade da VM é acompanhada por meio de investigações de integridade do aplicativo ou da extensão de Integridade do Aplicativo, se aplicadas ao conjunto de dimensionamento.

Dentro de uma região:

  • As VMs de diferentes Zonas de Disponibilidade não são atualizadas simultaneamente com a mesma atualização.
  • As VMs únicas que não fazem parte de um conjunto de disponibilidade são agrupadas da melhor maneira possível para evitar atualizações simultâneas de todas as VMs de uma assinatura.

Dentro de um 'conjunto':

  • Todas as VMs em um conjunto de disponibilidade ou conjunto de dimensionamento comum não são atualizadas simultaneamente.
  • As VMs em um conjunto de disponibilidade em comum são atualizadas dentro dos limites do domínio de atualização, e as VMs de vários domínios de atualização não são atualizadas simultaneamente.
  • As VMs em um conjunto de dimensionado de máquinas virtuais comum são agrupadas em lotes e atualizadas dentro dos limites do Domínio de Atualização.

Processo de atualização para Conjuntos de Dimensionamento de Máquinas Virtuais

  1. Antes de iniciar o processo de atualização, o orquestrador verifica se no máximo 20% das VMs em todo o conjunto de dimensionamento não estão íntegras (por qualquer motivo).

  2. O orquestrador de atualização identifica o lote de instâncias de VM a ser atualizado. Um lote de atualização pode ter no máximo 20% da contagem total de VMs, sujeito a um tamanho mínimo de lote de uma máquina virtual.

  3. Para conjuntos de dimensionamento com investigações de integridade do aplicativo ou extensão de Integridade do Aplicativo, a atualização aguardará até 5 minutos (ou a configuração da investigação de integridade definida) para que a VM se torne íntegra antes de atualizar o próximo lote. Se uma VM não recuperar sua integridade após uma atualização, por padrão, a versão da extensão anterior na VM será reinstalada.

  4. O orquestrador de atualização também acompanha o percentual das VMs que se tornarão não íntegras após uma atualização. A atualização é interrompida se mais de 20% das instâncias atualizadas se tornarem não íntegras durante o processo de atualização.

O processo acima continua até todas as instâncias no conjunto de dimensionamento serem atualizadas.

O orquestrador de atualização do conjunto de dimensionamento verifica a integridade geral do conjunto de dimensionamento antes de atualizar cada lote. Durante a atualização de um lote, podem haver outras atividades simultâneas de manutenção planejada ou não planejada que podem afetar a integridade das máquinas virtuais do conjunto de dimensionamento. Nesses casos, se houver mais de 20% das instâncias do conjunto de dimensionamento que se tornaram não íntegras, a atualização do conjunto de dimensionamento será interrompida no final do lote atual.

Extensões com suporte

A Atualização Automática de Extensão oferece suporte às seguintes extensões (outras extensões são adicionadas periodicamente):

Habilitar a Atualização Automática de Extensão

Para habilitar a Atualização Automática de Extensão para uma extensão, você deve garantir que a propriedade enableAutomaticUpgradeseja definida como true e adicionada individualmente a cada definição de extensão.

API REST para Máquinas Virtuais

Para habilitar a atualização de extensão automática para uma extensão (neste exemplo, a extensão do Dependency Agent) em uma VM do Azure, use a seguinte chamada:

PUT on `/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachines/<vmName>/extensions/<extensionName>?api-version=2019-12-01`
{    
    "name": "extensionName",
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "location": "<location>",
    "properties": {
        "autoUpgradeMinorVersion": true,
        "enableAutomaticUpgrade": true, 
        "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
        "type": "DependencyAgentWindows",
        "typeHandlerVersion": "9.5"
        }
}

API REST de Conjuntos de Dimensionamento de Máquinas Virtuais

Use a seguinte chamada para adicionar a extensão ao modelo do conjunto de dimensionamento:

PUT on `/subscriptions/<subscriptionId>/resourceGroups/<resourceGroupName>/providers/Microsoft.Compute/virtualMachineScaleSets/<vmssName>?api-version=2019-12-01`
{
   "location": "<location>",
   "properties": {
   	    "virtualMachineProfile": {
            "extensionProfile": {
       	        "extensions": [
            	{
                "name": "<extensionName>",
            	  "properties": {
             		    "autoUpgradeMinorVersion": true,
             		    "enableAutomaticUpgrade": true,
              	    "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
              	    "type": "DependencyAgentWindows",
              	    "typeHandlerVersion": "9.5"
            		}
          	    }
        	    ]
    	    }
    	}
    }
}

Azure PowerShell para Máquinas Virtuais

Use o cmdlet set-AzVMExtension:

Set-AzVMExtension -ExtensionName "Microsoft.Azure.Monitoring.DependencyAgent" `
    -ResourceGroupName "myResourceGroup" `
    -VMName "myVM" `
    -Publisher "Microsoft.Azure.Monitoring.DependencyAgent" `
    -ExtensionType "DependencyAgentWindows" `
    -TypeHandlerVersion 9.5 `
    -Location WestUS `
    -EnableAutomaticUpgrade $true

Azure PowerShell para Conjuntos de Dimensionamento de Máquinas Virtuais

Use o cmdlet Add-AzVmssExtension para adicionar a extensão ao modelo do conjunto de dimensionamento:

Add-AzVmssExtension -VirtualMachineScaleSet $vmss
    -Name "Microsoft.Azure.Monitoring.DependencyAgent" `
    -Publisher "Microsoft.Azure.Monitoring.DependencyAgent" `
    -Type "DependencyAgentWindows" `
    -TypeHandlerVersion 9.5 `
    -EnableAutomaticUpgrade $true

Atualize o conjunto de dimensionamento usando Update-AzVmss após adicionar a extensão.

CLI do Azure para Máquinas Virtuais

Use o cmdlet az vm extension set:

az vm extension set \
    --resource-group myResourceGroup \
    --vm-name myVM \
    --name DependencyAgentLinux \
    --publisher Microsoft.Azure.Monitoring.DependencyAgent \
    --version 9.5 \
    --enable-auto-upgrade true

CLI do Azure para Conjuntos de Dimensionamento de Máquinas Virtuais

Use o cmdlet az vmss extension set para adicionar a extensão ao modelo do conjunto de dimensionamento:

az vmss extension set \
    --resource-group myResourceGroup \
    --vmss-name myVMSS \
    --name DependencyAgentLinux \
    --publisher Microsoft.Azure.Monitoring.DependencyAgent \
    --version 9.5 \
    --enable-auto-upgrade true

Modelo ARM para máquinas virtuais

O exemplo a seguir descreve como definir atualizações automáticas de extensão para uma extensão (Extensão do Agente de Dependência neste exemplo) em uma Máquina Virtual usando o Gerenciador de Recursos do Azure

{
    "type": "Microsoft.Compute/virtualMachines/extensions",
    "location": "[resourceGroup().location]",
    "name": "<extensionName>",
    "dependsOn": [
        "[concat('Microsoft.Compute/virtualMachines/', variables('vmName'))]"
    ],
    "properties": {
        "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
        "type": "DependencyAgentWindows",
        "typeHandlerVersion": "9.5",
        "autoUpgradeMinorVersion": true,
        "enableAutomaticUpgrade": true,
        "settings": {
            "enableAMA": "true"
        }
    }
}

Modelo ARM para conjuntos de dimensionamento de máquina virtual

Use o exemplo a seguir para definir a atualização automática de extensão na extensão dentro do modelo de conjunto de escala:

{
   "type": "Microsoft.Compute/virtualMachineScaleSets",
   "apiVersion": "2023-09-01",
   "name": "[variables('vmScaleSetName')]",
   "location": "[resourceGroup().location]",
   "properties": {
   	    "virtualMachineProfile": {
            "extensionProfile": {
       	        "extensions": [{
                     "name": "<extensionName>",
                     "properties": {
                          "publisher": "Microsoft.Azure.Monitoring.DependencyAgent",
                          "type": "DependencyAgentWindows",
                          "typeHandlerVersion": "9.5",
                          "autoUpgradeMinorVersion": true,
                          "enableAutomaticUpgrade": true,
                     }
                }]
    	    }
    	}
    }
}

Atualizações de extensão com várias extensões

Uma VM ou um Conjunto de Dimensionamento de Máquinas Virtuais pode ter várias extensões com a atualização automática de extensão habilitada. A mesma VM ou conjunto de dimensionamento também pode ter outras extensões sem a atualização automática de extensão habilitada.

Se várias atualizações de extensão estiverem disponíveis para uma máquina virtual, as atualizações poderão ser agrupadas em lote, mas cada atualização de extensão será aplicada individualmente em uma máquina virtual. Uma falha em uma extensão não afeta qualquer outra extensão que pode estar sendo atualizada. Por exemplo, se duas extensões estão agendadas para uma atualização e a primeira atualização de extensão falhar, a segunda extensão ainda será atualizada.

Atualizações automáticas de extensão também podem ser aplicadas quando uma VM ou conjunto de dimensionamento de máquinas virtuais tiver várias extensões configuradas com o sequenciamento de extensões. O sequenciamento de extensões é aplicável à primeira implantação da VM e quaisquer atualizações futuras de extensão em uma extensão são aplicadas de forma independente.

Próximas etapas