Terraform Azurerm后端写入正常,但未读取

Terraform Azurerm后端写入正常,但未读取,azure,terraform,terraform-provider-azure,Azure,Terraform,Terraform Provider Azure,我正在尝试在Azure上设置一个简单的Terraform后端。我会写作,但阅读似乎并不奏效。例如,我尝试添加一个名为test\u a的azurerm\u资源组,然后terraform init和terraform apply,它被正确地存储在Azure上的一个存储桶中 我修改了我的代码并更改了资源的名称,将其命名为test\u b,然后terraform init和terraform apply,terraform销毁了我的test\u a并添加了我的test\u b资源。“应用完成!资源:添加

我正在尝试在Azure上设置一个简单的Terraform后端。我会写作,但阅读似乎并不奏效。例如,我尝试添加一个名为
test\u a
azurerm\u资源组
,然后
terraform init
terraform apply
,它被正确地存储在Azure上的一个存储桶中

我修改了我的代码并更改了资源的名称,将其命名为
test\u b
,然后
terraform init
terraform apply
,terraform销毁了我的
test\u a
并添加了我的
test\u b
资源。“
应用完成!资源:添加1个,更改0个,销毁1个。
”。问题是什么?我可以看到,每当我运行
terraforminit
命令时,它仍然会生成一个
.terraform
文件夹,其中包含
terraform.tfstate

main.tf

terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~>2.0"
    }
    azuread = {
      source  = "hashicorp/azuread"
      version = "~>1.0"
    }
  }
}

provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "test_a" {
  name     = "testing-resources"
  location = "West Europe"
}
terraform {
  required_version = ">= 0.12.6"
  
  backend "azurerm" {
    subscription_id      = "a095c3dd-xxx"
    resource_group_name  = "terraform"
    storage_account_name = "terraform963"
    container_name       = "tfstate"
    key                  = "terraform.tfstate"
  }
}
后端配置.tf

terraform {
  required_providers {
    azurerm = {
      source  = "hashicorp/azurerm"
      version = "~>2.0"
    }
    azuread = {
      source  = "hashicorp/azuread"
      version = "~>1.0"
    }
  }
}

provider "azurerm" {
  features {}
}

resource "azurerm_resource_group" "test_a" {
  name     = "testing-resources"
  location = "West Europe"
}
terraform {
  required_version = ">= 0.12.6"
  
  backend "azurerm" {
    subscription_id      = "a095c3dd-xxx"
    resource_group_name  = "terraform"
    storage_account_name = "terraform963"
    container_name       = "tfstate"
    key                  = "terraform.tfstate"
  }
}
terraform.tfstate(存储在Azure中)


Terraform使用此状态创建计划并对基础设施进行更改。在任何操作之前,Terraform都会进行刷新,以使用真实的基础设施更新状态。在这种情况下,您只需更改资源名称并保留现有资源组名称。Terraform将需要将现有基础设施迁移到该州

警告:Terraform希望它管理的每个远程对象 只能绑定到一个资源地址,这通常由 地形本身创造了所有的物体。如果导入现有的 将对象导入Terraform时,请小心将每个远程对象导入到 只有一个地形资源地址

您将使用命令
terraform import azurerm\u resource\u group.test\u b
导入状态。导入现有基础设施后,terraform将尝试添加资源组。根据最新状态测试


谢谢您的回答!Id在写入之前,有没有方法只导入
tfstate.tf
文件?我的意思是你的解决方案可行,但如果我有100个资源,但我不知道它们的名称
“Terraform导入的当前实现只能将资源导入状态。它不生成配置。因此,在运行terraform导入之前,需要手动写入资源的资源配置块,导入的对象将映射到该块。“
如果您有100个资源,则必须逐个导入每个资源,因为该命令当前一次只能导入一个资源。您可以查看此工具,它可以帮助您根据现有基础结构生成tf/json和tfstate文件。更多信息请参考,谢谢,现在一切都好了;D