【问题标题】:How to import existing resources to terraform in a separate subdirectory?如何将现有资源导入到单独的子目录中的 terraform?
【发布时间】:2021-10-27 02:45:27
【问题描述】:

我很久以前使用控制台在 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

然后我得到错误,资源必须在根目录下创建。

【问题讨论】:

  • 添加您正在尝试的命令、您尝试导入的资源的名称以及错误输出本身会很有帮助。
  • @MarkoE 我编辑了我的问题。

标签: amazon-web-services terraform


【解决方案1】:

由于您尝试将资源导入模块,导入的语法与不使用模块的情况相比略有不同。在这种情况下,它应该是这样的:

terraform import module.module_foo.aws_vpc.main vpc-xxx1234

更多信息请点击此处:https://www.terraform.io/docs/cli/commands/import.html#example-import-into-module

【讨论】:

    猜你喜欢
    • 2020-01-23
    • 2020-04-29
    • 2021-01-04
    • 2020-08-27
    • 2021-04-17
    • 2021-09-21
    • 2020-01-24
    • 2021-05-25
    • 2018-05-06
    相关资源
    最近更新 更多