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.
Este artigo lista problemas comuns e possíveis soluções ao usar o Terraform em 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 HashiCorp Terraform
- Perguntas, casos de uso e padrões úteis: seção Terraform do portal da comunidade HashiCorp
- Perguntas, casos de uso e padrões úteis: seção Terraform do portal da comunidade 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. Esse erro pode ocorrer devido a credenciais inválidas ou porque a entidade de serviço não tem permissão para usar a API Resource Manager. Erro do Azure: resources.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 o ID do objeto '00000000-0000-0000-0000-000000000000' não tem autorização para realizar a ação 'Microsoft.Resources/subscriptions/providers/read' sobre o escopo '/subscriptions/00000000-0000-0000-0000-000000000000' ou o escopo é inválido." Se o acesso foi concedido recentemente, atualize suas credenciais."
Plano de fundo: Se você executar comandos terraform do Cloud Shell e definir determinadas variáveis de ambiente do Terraform/Azure, poderá ver conflitos. A tabela a seguir lista as variáveis de ambiente e os valores Azure que elas representam:
| Variável de ambiente | Valor do Azure |
|---|---|
| ARM_SUBSCRIPTION_ID | ID de assinatura do Azure |
| ARM_TENANT_ID | ID do locatário de conta Microsoft |
| ARM_CLIENT_ID | ID do aplicativo da entidade de serviço Azure |
| ARM_CLIENT_SECRET | Senha da entidade de serviço do Azure |
Causa: No momento em que este texto foi escrito, 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 o principal de serviço para o qual as variáveis de ambiente apontam não tiver permissões na assinatura atual do Azure, 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 dois erros:
* O blob de estado já está bloqueado
* Os metadados do blob "terraformlockid" estavam vazios
O Terraform obtém um bloqueio de estado para evitar que o estado seja gravado 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 Terraform em um arquivo de estado do Terraform e esse erro for a única mensagem exibida, as causas a seguir podem ser a causa. Esse erro se aplica a arquivos de estado local e remoto.
Causa: Há duas possíveis causas para esse erro. A primeira causa é que um comando do Terraform já está em execução usando o arquivo de estado e aplicou um bloqueio nesse arquivo, para que nada quebre. 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 geralmente ocorre quando você está usando arquivos de estado remoto.
Resolução: Primeiro, verifique se 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 comandos. Como alternativa, verifique os pipelines de implantação para identificar se algum processo em execução pode estar usando o arquivo de estado. Se essa condição 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 Armazenamento do Azure, você pode localizar o arquivo e usar o botão Interromper concessão.
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.
O Terraform planeja excluir e recriar uma conta de armazenamento
O Terraform pode planejar excluir e recriar uma conta de armazenamento do Azure depois que o Azure fizer alterações nessa conta de armazenamento fora do Terraform. Esse comportamento pode ocorrer durante uma conversão com suporte da redundância de uma conta do Armazenamento do Azure, em que account_replication_type cruza o limite entre o conjunto não zonal (LRS, GRS, RA-GRS) e o conjunto zonal (ZRS, GZRS, RA-GZRS).
Antes de aplicar o plano, examine as alterações propostas e confirme por que o Terraform considera a substituição da conta de armazenamento necessária. Recriar uma conta de armazenamento pode causar tempo de inatividade ou perda de dados do aplicativo.
Para reduzir este risco:
- Desabilite a aprovação automática para implantações que gerenciam contas de armazenamento e examine cada
terraform plan. - Configure
prevent_destroy = trueno blocolifecycledo recurso da conta de armazenamento. - Antes de iniciar a conversão, adicione
account_replication_typetemporariamente aignore_changes. - Após a conversão, execute
terraform apply -refresh-onlypara atualizar o estado do Terraform e atualize a configuração do Terraform para corresponder à conta de armazenamento implantada. - Remova
ignore_changessomente após a execuçãoterraform plane confirme se não há alterações inesperadas.
Para obter orientações detalhadas sobre conversão, consulte Evitar divergência do Terraform para recursos do Azure com estado.