azure - Terraform 导入 - 资源标签是否重要?
问题描述
我们在 Azure 中的 terraform 远程状态文件已被完全销毁,我们现在面临着从头开始重新创建状态文件的挑战。我的选择是使用 Terraform 导入命令,使用以下简单语法:
terraform import <Terraform Resource Name>.<Resource Label> <Azure Resource ID>
例如,要导入现有资源组,我将在 main.tf 文件中创建以下配置。
provider "azurerm" {
version="1.39.0"
}
# create resource group
resource "azurerm_resource_group" "rg"{
name = "rg-terraform"
location = "uksouth"
}
现在,我遇到的问题如下:
最初创建现有 Azure 资源时,它们被分配了使用极其复杂的命名约定的名称,其中一些字符甚至是随机生成的。更复杂的是,它们都是独一无二的,有数百个。如果为它们分配一个像“main”这样的简单名称,那么一切都会很美好,就像在许多 Terraform 示例中常用的那样,但不幸的是,情况并非如此。
因此,我的问题是:
在将用于导入的 main.tf 配置文件放在一起时,我的“资源标签”(在我的导入命令中给出)是否必须与创建资源时的原始“资源标签”名称相匹配?
如果这是强制性要求,有什么方法可以从 Azure 中检索原始“资源标签”,就像我可以从 Azure 门户甚至是 Az CLI 查询中获取“Azure 资源 ID”一样?
如何确保导入中包含任何子资源(例如子网),而无需通过 Azure 门户手动搜索以识别每个子资源?
解决方案
- 不,绝对不是。选择任何你想要的。
- 不,Azure 通常不知道这个标签,它是 terraform 内部的东西。
- 不幸的是,您需要手动单独导入每个资源。
你确定当前状态文件丢失了吗?存储位置没有版本化?是否没有开发人员仍然拥有状态文件的本地副本?
推荐阅读
- python-3.x - 需要使用python、django创建用户参考图
- reactjs - 如何在不使用'exact'参数的情况下在反应路由器dom中构建路由?
- apache-nifi - Nifi > RunMongoAggregation > 抛出超时异常
- routes - 等效于 Adonis JS 的 Ziggy
- javascript - flutter_webview 在一个 javascript 通道中声明多个 javascript 接口
- css - 在 Material ui 样式中编写 JS
- rest-assured - AllureRestAssured ,如何忽略日志记录头
- java - Maven:解析工件时出错 - 提供节点名或服务名,或未知
- c++ - 设计游戏循环
- r - 无法打开 R Markdown:需要以下软件包的更新版本