假设我已经使用 terraform 来构建我的基础设施,但由于某种原因我的 tfstate 被删除了。这意味着我已经在 tf 文件中定义了我的资源,我只需要重新导入所有内容。
这是否必须是手动过程?
例如,这是我导入 EC2 实例的方式:
terraform import aws_instance.web i-123456
Run Code Online (Sandbox Code Playgroud)
如果我必须为每个资源都这样做,那就太痛苦了(不妨删除所有内容并重新开始)。
如果我已经有了我的 tf 文件,有没有办法只导入其中定义的所有资源?例如,我需要实例 ID 才能导入该实例。terraform import 命令可以读取我的 tf 文件并找到映射到“aws_instance.web”的资源吗?
为了做到这一点,terraform 需要将该 aws 实例映射到 tf 文件中的资源——这当然是 tfstate 的目的。但是 terraform 是否也可以使用资源映射来标记资源?所以我可以对 tf 文件进行导入,terraform 只是动态读取 tf 文件并通过唯一标签找到与 tf 资源对应的物理资源?
不,在 Terraform 中无法本地执行此操作;即使你一起编写了一种方法 - 我认为它不会非常可靠,你也无法相信它选择了正确的资源(至少不容易)。
Terraform 在文档中多次提到您需要保护状态文件;这就是为什么鼓励远程存储(例如 S3)用于您关心的任何事情的原因;以及为什么这是 Terraform Enterprise 的卖点。
| 归档时间: |
|
| 查看次数: |
6231 次 |
| 最近记录: |