我们在Azure中的地形远程状态文件已经完全被破坏了,我们现在面临着从头开始重新创建状态文件的挑战。我的选择是使用Terraform导入命令,使用以下简单语法:
terraform import <Terraform Resource Name>.<Resource Label> <Azure Resource ID>
例如,要导入现有的资源组,我将在主目录中创建以下配置。tf文件。
provider "azurerm" {
version="1.39.0"
}
# create resource group
resource "azurerm_resource_group" "rg"{
name = "rg-terraform"
location = "uksouth"
}
现在,我遇到的问题如下:
在最初创建现有Azure资源时,为它们分配的名称使用了极其复杂的命名约定,其中一些字符甚至是随机生成的。更复杂的是,它们都是独一无二的,而且有数百个。如果给它们分配一个简单的名字,比如"main",那么一切都会很美好,就像在许多Terraform例子中常用的那样,但不幸的是,情况并非如此。
因此,我的问题是:
当把我的主。我的"资源标签"是一个绝对的要求吗?(在我的导入命令中给出)必须匹配原始的"资源标签"。创建资源时的名称?
如果是强制性要求,我是否可以检索原始的"资源标签"?以同样的方式从Azure中获取"Azure资源id"。从Azure门户甚至Az CLI查询?
我如何确保任何子资源(如子网)都包含在导入中,而无需通过Azure门户手动拖网来识别它们中的每一个?
- 不,绝对不是。
- 不,Azure通常不知道这个标签,它是内部的东西。
- 不幸的是,你需要手动和单独导入每个资源。
您是否绝对确定当前状态文件已丢失?存储位置没有版本控制?难道没有开发人员仍然拥有状态文件的本地副本吗?