Terraform Azurerm后端写入正常,但未读取
我正在尝试在Azure上设置一个简单的Terraform后端。我会写作,但阅读似乎并不奏效。例如,我尝试添加一个名为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资源。“应用完成!资源:添加
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