Partilhar via


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 HashiCorp Terraform

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 que 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 '00000000-0000-0000-0000-000000000000' com id de objeto '00000000-0000-0000-0000-00000-00000000000' não tem autorização para executar a ação 'Microsoft.Resources/subscriptions/providers/read' sobre o escopo '/subscriptions/00000000-0000-0000-0000-00000000000' ou o escopo é inválido. Se o acesso tiver sido concedido recentemente, atualize as credenciais.”

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

Variável de ambiente Valor do Azure
ARM_SUBSCRIPTION_ID Id de subscrição do Azure
ARM_TENANT_ID ID do locatário da conta da Microsoft
ARM_CLIENT_ID ID do aplicativo principal de serviço do Azure
ARM_CLIENT_SECRET Palavra-passe da entidade de serviço do Azure

Causa: No momento em que este artigo foi escrito, o script Terraform executado no Cloud Shell substitui as variáveis e ARM_TENANT_ID de ARM_SUBSCRIPTION_ID ambiente 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 atual do Azure, todas as operações do Terraform falharão.

Erro ao adquirir o bloqueio de estado

Mensagem de erro:

Erro: Erro ao adquirir o bloqueio de estado; Mensagem de erro: Ocorreram 2 erros:
* blob de estado já está bloqueado
* Blob Metadata "Terraformlockid" estava vazio
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 desativar o bloqueio com o sinalizador "-lock=false", mas isso não é recomendado.

Fundo: Se você estiver executando comandos Terraform em um arquivo de estado Terraform e esse erro for a única mensagem exibida, as seguintes causas podem ser aplicadas. Aplica-se a arquivos de estado locais e remotos.

Causa: Há duas causas potenciais para esse erro. A primeira é que um comando Terraform já está sendo executado contra o arquivo de estado e forçou um bloqueio no arquivo, então nada quebra. A segunda causa potencial é que ocorreu uma interrupção de conexão entre o arquivo de estado e a CLI quando os comandos estavam em execução. Essa interrupção ocorre mais comumente quando você está usando arquivos de estado remoto.

Resolução: primeiro, certifique-se de que você ainda não está executando nenhum comando no arquivo de estado. Se você estiver trabalhando com um arquivo de estado local, verifique se você tem terminais executando algum comando. Como alternativa, verifique seus pipelines de implantação para ver se algo em execução pode estar usando o arquivo de estado. Se isso não resolver o problema, é possível que a segunda causa tenha desencadeado o erro. Para um arquivo de estado remoto armazenado em um contêiner de conta de Armazenamento do Azure, você pode localizar o arquivo e usar o botão Quebrar 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, consulte a documentação da HashiCorp.

Erros de VPN

Para obter informações sobre como resolver erros de VPN, consulte o artigo Solucionar problemas de uma conexão VPN híbrida.