是否可以批量导入 Terraform 中的现有基础设施?

is it possible to bulk import existing infrastructure in terraform?

我正在使用 Terraform 创建基础设施。我决定将它模块化。但是在模块化和使用 terraform 计划之后,我可以看到我的计划:添加 28 个,更改 0 个,销毁 28 个。

如果我将现有结构更改为模块化,terraform 会破坏所有结构吗?有什么办法不删除infra

由于您决定将基础架构代码拆分为多个模块,因此 Terraform 会将您的资源视为新资源,因为它们的位置确实发生了变化。

Moving resource blocks from one module into several child modules causes Terraform to see the new location as an entirely different resource.

文档:https://www.terraform.io/language/modules/syntax#transferring-resource-state-into-modules

您现在可以通过多种方式继续:

一个。您可以使用 Terraform 的 refactoring 功能(从版本 1.1 开始可用):https://www.terraform.io/language/modules/develop/refactoring 并利用 moved 块将旧资源映射到新资源一个。

b。您可以从干净的 terraform 状态开始,然后手动将资源从您的实际基础架构导入状态 (https://www.terraform.io/cli/import)(您需要为所有 28 个资源执行此操作)

但如果它是您的新项目,最简单的方法就是从头开始重新创建资源(当然,如果它不是包含重要数据的生产环境)