我很久以前就使用控制台在AWS中创建了一些资源,包括VPC等,现在我想将它们导入到Terraform中。我已经为我的项目制作了一个结构,例如:
└── project_xxx
├── main.tf
├── modules
│ ├── module_foo
│ │ ├── main.tf
│ │ ├── outputs.tf
│ │ └── variables.tf
│ ├── module_bar
│ │ ├── main.tf
│ │ ├── outputs.tf
│ │ └── variables.tf
│ ...
├── outputs.tf
├── provider.tf
├── README.md
├── terraform.tfvars
├── variables.tf
└── versions.tf
但是当我尝试在其模块中导入资源时,Terraform 给出错误并要求在根目录中创建它们。 有什么建议吗?
例如: 在modules/module_foo/main.tf中,我有以下代码:
resource "aws_vpc" "main" {
cidr_block = "10.0.0.0/16"
instance_tenancy = "default"
tags = {
Name = "main"
}
}
然后:在根目录中,我执行以下命令:
terraform init
terraform plan # it shows one resource will be added
terraform import aws_vpc.main vpc-xxx1234
然后我收到错误,资源必须在根目录中创建。
最佳答案
由于您尝试将资源导入到模块中,因此导入的语法与不使用模块时的情况略有不同。在这种情况下,它应该是这样的:
terraform import module.module_foo.aws_vpc.main vpc-xxx1234
更多信息请参见:https://www.terraform.io/docs/cli/commands/import.html#example-import-into-module .
关于amazon-web-services - 如何将现有资源导入到 terraform 的单独子目录中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68948690/