我正在阅读 Terraform 的文档,发现这两个命令:
$ terraform import aws_instance.foo i-abcd1234
$ terraform import module.foo.aws_instance.bar i-abcd1234
所以我想知道执行这两个命令时 terraform 状态的实际区别是什么。
提前致谢!
答案 0 :(得分:3)
运行 terrafom import
时,Terraform 期望您导入的 resources 在您的配置中定义。
对于您的第一种情况 $ terraform import aws_instance.foo i-abcd1234
,您至少需要定义:
# main.tf
resource "aws_instance" "foo" {
}
Terraform 将使用来自 AWS 的详细信息更新状态文件。
在第二个 $ terraform import module.foo.aws_instance.bar i-abcd1234
中,Terraform 期望包含资源“aws_instance bar”的模块“foo”存在。检查 when to create modules 和 how to compose them。例如
# modules/foo
resource "aws_instance" "foo" {
}
# main.tf
module "consul_cluster" {
source = "./modules/aws-consul-cluster"
}
如果您检查状态文件,您会发现导入的资源嵌套不同。