Estamos usando o Azure como back-end para nosso código Terraform. Abaixo está o código.
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~> 3.40.0"
}
}
backend "azurerm" {
resource_group_name = "test"
storage_account_name = "test"
container_name = "test"
key = "test.tfstate"
tenant_id = "abc"
}
}
provider "azurerm" {
features {}
alias = "new-new"
subscription_id = var.another_subscription
}
provider "azurerm" {
features {}
}
E fiz login como usuário principal do serviço usando o comando abaixo:
az login --service-principal -t tenant-id-here -u object-id-of-sp -p client-secret-of-sp
E quando faço terraform init
isso dá o erro abaixo:
Initializing the backend...
╷
│ Error: Error building ARM Config: Authenticating using the Azure CLI is only supported as a User (not a Service Principal).
│
│ To authenticate to Azure using a Service Principal, you can use the separate 'Authenticate using a Service Principal'
│ auth method - instructions for which can be found here: https://registry.terraform.io/providers/hashicorp/azurerm/latest/docs/guides/service_principal_client_secret
│
│ Alternatively you can authenticate using the Azure CLI by using a User Account.
Também tentei armazenar o arquivo de configuração de back-end depois de fazer login
Az
usando umService Principal
, mas ainda estou encontrando o mesmo erro.Para resolver o problema, você precisa fornecer
client_id
,client_secret
,subscription_id
etenant_id
da entidade de serviço nobackend
bloco de configuração do TerraformInicialização do Terraform
Depois de executar o
terraform init
, ele está funcionando e o.tfstate
arquivo também é copiadostorage account
como mostrado abaixo.