Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Visão geral dos modelos do Azure Resource Manager
Os modelos do Azure Resource Manager permitem que você especifique declarativamente a infraestrutura iaaS do Azure na linguagem JSON definindo as dependências entre os recursos.
Consulte modelos de extensão de criação para saber mais sobre como criar modelos para usar extensões.
Neste artigo, aprenderemos a solucionar problemas de algumas das falhas comuns de extensão de VM.
Exibindo o status da extensão
Os modelos do Azure Resource Manager podem ser executados no Azure PowerShell. Depois que o modelo for executado, o status da extensão poderá ser exibido no Azure Resource Explorer ou nas ferramentas de linha de comando.
Veja um exemplo:
Azure PowerShell:
Get-AzVM -ResourceGroupName $RGName -Name $vmName -Status
Aqui está a saída de 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
}
]
}
Solução de problemas de falhas de extensão
Verifique se o agente de VM está em execução e pronto
O Agente de VM é necessário para gerenciar, instalar e executar extensões. Se o Agente de VM não estiver em execução ou não estiver falhando ao relatar um status Pronto para a plataforma do Azure, a extensão não estará funcionando corretamente.
As seguintes páginas para solucionar problemas do Agente de VM:
- Solução de problemas do Agente Convidado do Windows Azure para uma VM do Windows
- Solucionar problemas do Agente Linux do Azure para uma VM linux
Verifique o guia de solução de problemas de extensão específico
Algumas extensões têm uma página específica que descreve como solucioná-las. Você pode encontrar a lista dessas extensões e páginas em extensões de solução de problemas .
Exibir o status da extensão
Conforme explicado anteriormente, o status da extensão pode ser encontrado executando o cmdlet do PowerShell:
Get-AzVM -ResourceGroupName $RGName -Name $vmName -Status
Ou o comando da CLI:x
az vm extension show -g <RG Name> --vm-name <VM Name> --name <Extension Name>
Ou no portal do Azure, navegando até a folha da VM/Configurações/Extensões. Em seguida, você pode clicar na extensão e verificar seu status e mensagem.
Executar novamente a extensão na VM
Se você estiver executando scripts na VM usando a Extensão de Script Personalizado, às vezes poderá encontrar um erro em que a VM foi criada com êxito, mas o script falha. Nessas condições, a maneira recomendada de se recuperar desse erro é remover a extensão e executar o modelo novamente.
Observação
No futuro, essa funcionalidade seria aprimorada para remover a necessidade de desinstalar a extensão.
Remover a extensão do Azure PowerShell
Remove-AzVMExtension -ResourceGroupName $RGName -VMName $vmName -Name "myCustomScriptExtension"
Depois que a extensão for removida, o modelo poderá ser executado novamente para executar os scripts na VM.
Disparar um novo GoalState para a VM
Você pode ver que uma extensão não está em execução porque o 'Gerador de Certificados CRP do Windows Azure' está ausente. Esse certificado ajuda a proteger as configurações da extensão durante o transporte. Esse certificado é regenerado automaticamente reiniciando o Agente Convidado do Windows de dentro da Máquina Virtual:
- Abrir o Gerenciador de Tarefas
- Vá para a guia Detalhes
- Localizar o processo de WindowsAzureGuestAgent.exe
- Clique com o botão direito do mouse e selecione "Encerrar Tarefa". O processo é reiniciado automaticamente
Você também pode disparar um novo GoalState para a VM executando um "Reaplicativo de VM". A VM Reapply é uma API introduzida em 2020 para reaplicar o estado de uma VM. É recomendável fazer isso em um momento em que você pode tolerar um curto tempo de inatividade da VM. A reaplicação geralmente não reinicializa a VM, mas, em casos raros, ela pode disparar uma atualização pendente que requer uma reinicialização.
Portal do Azure:
No portal, selecione a VM e, no painel esquerdo, em Suporte + solução de problemas, selecione Reimplantar + reaplicar e, em seguida, selecione Reaplicar.
Azure PowerShell (substitua o nome RG e o nome da VM pelos seus valores):
Set-AzVM -ResourceGroupName <RG Name> -Name <VM Name> -Reapply
CLI do Azure (substitua o nome do RG e o nome da VM por seus valores):
az vm reapply -g <RG Name> -n <VM Name>
Se um "Reaplicativo de VM" não funcionar, você poderá adicionar um novo Disco de Dados vazio à VM do Portal de Gerenciamento do Azure e removê-lo mais tarde depois que o certificado for adicionado novamente.
Examine os logs de extensão dentro da VM
Se as etapas anteriores não funcionarem e se sua extensão ainda estiver em um estado com falha, a próxima etapa será examinar seus logs dentro da Máquina Virtual.
Em uma VM do Windows , os logs de extensão por padrão residem em
C:\WindowsAzure\Logs\Plugins
E as configurações de extensão e os arquivos de status por padrão estão em
C:\Packages\Plugins
Em uma VM do Linux , os logs de extensão são padrão
/var/log/azure/
E as configurações de extensão e os arquivos de status por detalhes estão em
/var/lib/waagent/
Cada extensão é diferente, mas eles geralmente seguem princípios semelhantes:
Pacotes de extensão e binários são baixados na VM (exemplo: "/var/lib/waagent/custom-script/download/1" para Linux ou "C:\Packages\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.12\Downloads\0" para Windows).
Suas configurações e configurações são passadas da Plataforma do Azure para o manipulador de extensão por meio do Agente de VM (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)
Manipuladores de extensão dentro da VM estão gravando em um arquivo de status (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 é relatado à Plataforma Azure. Esse status é o relatado por meio do PowerShell, da CLI ou da folha de extensão da VM no portal do Azure.
Eles também gravam logs detalhados de sua execução (exemplo: "/var/log/azure/custom-script/handler.log" para Linux ou "C:\WindowsAzure\Logs\Plugins\Microsoft.Compute.CustomScriptExtension\1.10.12\CustomScriptHandler.log" para Windows).
Se a VM for recriada de uma VM existente
Pode acontecer de você estar criando uma VM do Azure com base em um Disco especializado proveniente de outra VM do Azure. Nesse caso, é possível que a VM antiga contenha extensões e binários, logs e arquivos de status que sobraram. O novo modelo de VM não está ciente dos estados de extensões da VM anterior e pode relatar um status incorreto para essas extensões. É altamente recomendável remover as extensões da VM antiga antes de criar a nova e reinstalar essas extensões depois que a nova VM for criada. O mesmo pode acontecer quando você cria uma imagem generalizada de uma VM existente do Azure. Convidamos você a remover extensões para evitar o estado inconsistente das extensões.
Problemas conhecidos
O PowerShell não é reconhecido como um comando interno ou externo
Observe as seguintes entradas de erro na saída da extensão RunCommand:
RunCommandExtension failed with "'powershell' isn't recognized as an internal or external command,"
Análise
As extensões são executadas em uma conta do Sistema Local, portanto, é possível que powershell.exe funcione bem quando você usa RDP na VM, mas falha ao executar com RunCommand.
Solution
- Verifique se o PowerShell está listado corretamente na variável de ambiente PATH:
- Abrir Painel de Controle
- Sistema e segurança
- System
- Guia Avançado –> Variáveis ambientais
- Em 'Variáveis do sistema', clique em editar e verifique se o PowerShell está na variável de ambiente PATH (geralmente: "C:\Windows\System32\WindowsPowerShell\v1.0")
- Reinicie a VM ou reinicie o serviço WindowsAzureGuestAgent e tente executar o comando novamente.
O comando não é reconhecido como um comando interno ou externo
Você verá o seguinte no arquivo C:\WindowsAzure\Logs\Plugins<ExtensionName><Version>\CommandExecution.log:
Execution Error: '<command>' isn't recognized as an internal or external command, operable program or batch file.
Análise
As extensões são executadas em uma conta do Sistema Local, portanto, é possível que powershell.exe funcione bem quando você usa RDP na VM, mas falha ao executar com RunCommand.
Solution
- Abra um Prompt de Comando na VM e execute um comando para reproduzir o erro. O Agente de VM usa o administrador cmd.exe e você pode ter algum comando pré-configurado para executar sempre que o cmd for iniciado.
- Também é provável que a variável PATH esteja configurada incorretamente, mas isso depende do comando que está tendo o problema.
O VMAccessAgent está falhando com Não é possível atualizar as configurações de Conexão de Área de Trabalho Remota para a conta de Administrador. Erro: System.Runtime.InteropServices.COMException (0x800706D9): não há mais pontos de extremidade disponíveis no mapeador do ponto de extremidade.
Você verá o seguinte no status da extensão:
Type Microsoft.Compute.VMAccessAgent
Version 2.4.8
Status Provisioning failed
Status level Error
Status message Cannot update Remote Desktop Connection settings for Administrator account. Error: System.Runtime.InteropServices.COMException (0x800706D9): There are no more endpoints available from the endpoint mapper. (Exception from HRESULT: 0x800706D9) at NetFwTypeLib.INetFwRules.GetEnumerator() at
Microsoft.WindowsAzure.GuestAgent.Plugins.JsonExtensions.VMAccess.RemoteDesktopManager.EnableRemoteDesktopFirewallRules()
at Microsoft.WindowsAzure.GuestAgent.Plugins.JsonExtensions.VMAccess.RemoteDesktopManager.EnableRemoteDesktop() at
Análise
Esse erro pode ocorrer quando o serviço Firewall do Windows não estiver em execução.
Solution
Verifique se o serviço firewall do Windows está habilitado e em execução. Se não estiver, habilite e inicie-o e tente novamente executar o VMAccessAgent.
O certificado remoto é inválido de acordo com o procedimento de validação.
Você verá o seguinte no WaAppAgent.log
System.Net.WebException: The underlying connection was closed: Could not establish trust relationship for the SSL/TLS secure channel. ---> System.Security.
Authentication.AuthenticationException: The remote certificate is invalid according to the validation procedure.
Análise
Sua VM provavelmente está perdendo o certificado Baltimore CyberTrust Root em "Autoridades de Certificação Raiz Confiáveis".
Solution
Abra o console de certificados com certmgr.msc e verifique se o certificado está lá.
Uma ferramenta de inspeção SSL de terceiros, como o ZScaler, pode interromper a cadeia de certificados. Você deve configurar essas ferramentas para ignorar a inspeção SSL.