Resolução de problemas Azure Windows falhas de extensão VM

Descrição Geral dos Modelos do Azure Resource Manager

Os modelos Azure Resource Manager permitem-lhe especificar de forma declarativa a infraestrutura IaaS do Azure em linguagem JSON, definindo as dependências entre os recursos.

Veja Criação de modelos de extensão para saber mais sobre a criação de modelos para utilizar extensões.

Neste artigo, aprenderemos sobre resolução de problemas de algumas das falhas de extensão de VM comuns.

Estado de extensão de visualização

Os modelos do Gestor de Recursos Azure podem ser executados a partir de Azure PowerShell. Uma vez executado o modelo, o estado de extensão pode ser visualizado a partir do Azure Resource Explorer ou das ferramentas da linha de comando.

Segue-se um exemplo:

Azure PowerShell:

Get-AzVM -ResourceGroupName $RGName -Name $vmName -Status

Segue-se o resultado do exemplo:

Extensions:  {
  "ExtensionType": "Microsoft.Compute.CustomScriptExtension",
  "Name": "myCustomScriptExtension",
  "SubStatuses": [
    {
      "Code": "ComponentStatus/StdOut/succeeded",
      "DisplayStatus": "Provisioning succeeded",
      "Level": "Info",
      "Message": "    Directory: C:\\temp\\n\\n\\nMode                LastWriteTime     Length Name
          \\n----                -------------     ------ ----                              \\n-a---          9/1/2015   2:03 AM         11
          test.txt                          \\n\\n",
                  "Time": null
      },
    {
      "Code": "ComponentStatus/StdErr/succeeded",
      "DisplayStatus": "Provisioning succeeded",
      "Level": "Info",
      "Message": "",
      "Time": null
    }
  ]
}

Falhas na extensão de resolução de problemas

Verifique se o agente VM está em execução e pronto

O Agente VM é obrigado a gerir, instalar e executar extensões. Se o Agente VM não estiver em funcionamento ou não estiver a reportar um estado de Pronto à plataforma Azure, então as extensões não funcionarão corretamente.

Consulte as seguintes páginas para resolver problemas com o Agente VM:

Consulte o seu guia específico de resolução de problemas de extensão

Algumas extensões têm uma página específica descrevendo como resolvê-las. Pode encontrar a lista destas extensões e páginas nas extensões de resolução de problemas .

Ver o estado da extensão

Como explicado acima, o estado da extensão pode ser encontrado executando o cmdlet PowerShell:

Get-AzVM -ResourceGroupName $RGName -Name $vmName -Status

ou o comando CLI:

az vm extension show -g <RG Name> --vm-name <VM Name>  --name <Extension Name>

ou no portal Azure, navegando para a Lâmina VM / Definições / Extensões. Em seguida, pode clicar na extensão e verificar o seu estado e mensagem.

Reencauma a extensão no VM

Se estiver a executar scripts no VM utilizando a Extensão de Script Personalizado, pode por vezes encontrar um erro em que o VM foi criado com sucesso, mas o script falhou. Nestas condições, a forma recomendada de recuperar deste erro é remover a extensão e voltar a repetir o modelo. Nota: No futuro, esta funcionalidade seria melhorada para remover a necessidade de desinstalar a extensão.

Retire a extensão do Azure PowerShell

Remove-AzVMExtension -ResourceGroupName $RGName -VMName $vmName -Name "myCustomScriptExtension"

Uma vez removida a extensão, o modelo pode ser re-executado para executar os scripts no VM.

Desencadear um novo GoalState para o VM

Pode notar que uma extensão não foi executada, ou que não está a ser executada devido a um "gerador de certificado Windows s Azure CRP" em falta (esse certificado é utilizado para garantir o transporte das definições protegidas da extensão). Este certificado será regenerado automaticamente reiniciando o Windows Agente Convidado de dentro da Máquina Virtual:

  • Abra o Gestor de Tarefas
  • Vá ao separador Detalhes
  • Localizar o processo de WindowsAzureGuestAgent.exe
  • Clique à direita e selecione "End Task". O processo será automaticamente reiniciado

Também pode desencadear um novo GoalState para o VM, executando uma "Reapply VM". A VM Reapply é uma API introduzida em 2020 para reaplicar o estado de um VM. Recomendamos fazê-lo numa altura em que pode tolerar um curto tempo de inatividade em VM. Embora a Reapply em si não cause um reboot VM, e a grande maioria das vezes chamando Reapply não reiniciará o VM, existe um risco muito pequeno de que alguma outra atualização pendente para o modelo VM seja aplicada quando a Reapply desencadeia um novo estado de objetivo, e que outra mudança pode exigir um reinício.

Portal Azure:

No portal, selecione o VM e no painel esquerdo sob o Support + resolução de problemas, selecione Reploy + recandidatar-se, em seguida, selecione Recandidatar-se.

Azure PowerShell (substitua o nome RG e o nome VM pelos seus valores):

Set-AzVM -ResourceGroupName <RG Name> -Name <VM Name> -Reapply

Azure CLI (substitua o nome RG e o nome VM pelos seus valores):

az vm reapply -g <RG Name> -n <VM Name>

Se um "VM Reapply" não funcionar, pode adicionar um novo Disco de Dados vazio ao VM do Portal de Gestão de Azure e, em seguida, removê-lo mais tarde uma vez que o certificado tenha sido adicionado de volta.

Veja os registos de extensão dentro do VM

Se os passos anteriores não funcionarem e se a sua extensão ainda estiver num estado falhado, o próximo passo é olhar para os seus registos dentro da Máquina Virtual.

Em um VM Windows, os registos de extensão normalmente residem em

C:\WindowsAzure\Logs\Plugins

E as definições de extensão e os ficheiros de estado estarão em

C:\Packages\Plugins

Em um Linux VM, os registos de extensão normalmente residem em

/var/log/azure/

E as definições de extensão e os ficheiros de estado estarão em

/var/lib/waagent/

Cada extensão é diferente, mas geralmente seguem princípios semelhantes:

Pacotes de extensão e binários são descarregados no VM (por exemplo. "/var/lib/waagent/custom-script/download/1" para Linux ou "C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.12\Downloads\0" para Windows).

A sua configuração e configurações são passadas da Plataforma Azure para o manipulador de extensão através do Agente VM (por exemplo. "/var/lib/waagent/Microsoft.Azure.Extensions.CustomScript-2.1.3/config" para Linux ou "C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.12\RuntimeSettings" para Windows)

Os manipuladores de extensão dentro do VM estão a escrever para um ficheiro de estado (por exemplo. "/var/lib/waagent/Microsoft.Azure.Extensions.CustomScript-2.1.3/status/1.status" para Linux ou "C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.12\Status" para Windows) que será depois reportado à Plataforma Azure. Este estado é o relatado através do PowerShell, CLI ou na lâmina de extensão do VM no portal Azure.

Também escrevem registos detalhados da sua execução (por exemplo. "/var/log/azure/custom-script/handler.log" para Linux ou "C:\WindowsAzure\Logs\Plugins\Microsoft.CustomScriptExtension\1.10.12\CustomScriptHandler.log" para Windows).

Se o VM for recriado a partir de um VM existente

Pode acontecer que esteja a criar um VM Azure baseado num Disco especializado proveniente de outro Azure VM. Nesse caso, é possível que o antigo VM contenha extensões, e assim terá binários, registos e ficheiros de estado restantes. O novo modelo VM não terá conhecimento dos estados de extensão anteriores da VM, podendo reportar um estado incorreto para estas extensões. Recomendamos vivamente remover as extensões do antigo VM antes de criar a nova e, em seguida, reinstalar estas extensões assim que o novo VM for criado. O mesmo pode acontecer quando se cria uma imagem generalizada a partir de um VM Azure existente. Convidamo-lo a remover extensões para evitar um estado inconsistente das extensões.