Solucionar problemas comuns ao usar o Terraform no Azure

Este artigo lista problemas comuns e possíveis soluções ao usar o Terraform no Azure.

Se você encontrar um problema específico do Terraform, use um dos canais de suporte da comunidade da HashiCorp.

Canais de suporte específicos do Terraform da HashiCorp

Não é possível listar o status de registro do provedor

Mensagem de erro:

Erro: Não é possível listar o status de registro do provedor, é possível que isso se deva a credenciais inválidas ou a entidade de serviço não tenha permissão para usar a API do Gerenciador de Recursos, erro do Azure: recursos. ProvidersClient#List: Falha ao responder à solicitação: StatusCode=403 -- Erro original: autorest/azure: O serviço retornou um erro. Status=403 Code="AuthorizationFailed" Message="O cliente '000000000-0000-0000-000000-00000000000' com ID de objeto '000000000-0000-0000-00000000000' não tem autorização para executar a ação 'Microsoft.Resources/subscriptions/providers/read' sobre o escopo '/subscriptions/00000000-0000-0000-0000-0000000000' ou o escopo é inválido. Se o acesso foi concedido recentemente, atualize suas credenciais."

Segundo plano: se você estiver executando comandos do Terraform no Cloud Shell e tiver definido determinadas variáveis de ambiente do Terraform/Azure, às vezes poderá ver conflitos. As variáveis de ambiente e o valor do Azure que elas representam estão listadas na seguinte tabela:

Variável de ambiente Valor do Azure
ARM_SUBSCRIPTION_ID ID da assinatura do Azure
ARM_TENANT_ID ID do locatário de conta Microsoft
ARM_CLIENT_ID ID do aplicativo da entidade de serviço do Azure
ARM_CLIENT_SECRET Senha da entidade de serviço do Azure

Causa: no momento da redação deste artigo, o script do Terraform executado no Cloud Shell substitui as variáveis de ambiente ARM_SUBSCRIPTION_ID e ARM_TENANT_ID usando valores da assinatura atual do Azure. Como resultado, se a entidade de serviço referenciada pelas variáveis de ambiente não tiver direitos para a assinatura do Azure atual, qualquer operação do Terraform falhará.

Erro na aquisição do bloqueio de estado

Mensagem de erro:

Erro: Erro ao adquirir o bloqueio de estado; Mensagem de erro: Ocorreram 2 erros:
* O blob do estado já está bloqueado
* Metadados de blob "TerraFormLockID" estava vazio
O Terraform adquire um bloqueio de estado para proteger o estado de ser escrito por vários usuários ao mesmo tempo. Resolva o problema acima e tente novamente. Para a maioria dos comandos, você pode desabilitar o bloqueio com o sinalizador "-lock=false", mas isso não é recomendado.

Contexto: se você estiver executando comandos do Terraform em um arquivo de estado do Terraform e esse erro for a única mensagem exibida, as causas a seguir poderão se aplicar. Aplica-se a arquivos de estado local e remoto.

Causa: há duas causas possíveis para esse erro. A primeira é que um comando do Terraform já está em execução no arquivo de estado e ele forçou um bloqueio no arquivo, então nada foi interrompido. A segunda possível causa é que ocorreu uma interrupção da conexão entre o arquivo de estado e a CLI quando os comandos estavam em execução. Essa interrupção geralmente ocorre quando você está usando arquivos de estado remoto.

Resolução: primeiro, verifique se você já não está executando nenhum comando no arquivo de estado. Se você estiver trabalhando com um arquivo de estado local, verifique se os seus terminais estão executando algum comando. Como alternativa, verifique seus pipelines de implantação para ver se tem algo em execução que possa estar usando o arquivo de estado. Se isso não resolver o problema, é possível que a segunda causa tenha disparado o erro. Para um arquivo de estado remoto armazenado em um contêiner de conta do Armazenamento do Azure, você pode localizar o arquivo e usar o botão Interromper concessão.

Screenshot that shows the Azure Storage container Break lease button.

Se você estiver usando outros back-ends para armazenar seu arquivo de estado, para obter recomendações, confira a Documentação do HashiCorp.

Erros de VPN

Para saber mais sobre como resolver erros de VPN, confira o artigo Solucionar problemas de uma conexão VPN híbrida.