amazon-web-services - 如何将现有资源导入到 terraform 的单独子目录中?

标签 amazon-web-services terraform terraform-provider-aws

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

相关文章:

amazon-web-services - Terraform 创建的安全组没有规则

amazon-web-services - 使用 Java SDK 查询 AWS SQS 队列 URL

mysql - 无法从 Ubuntu 计算机中安装的 Ejabberd 连接到 MySQL。 AWS-EC2

amazon-web-services - 启动配置中的用户数据与 Ansible

cloud - Terraform - 我应该使用 user_data 还是配置器来引导资源?

go - 如何在 terratest 中传递 assume 角色

ios - NSURLConnection 有效,但 AFNetworking 无效(在特定 URL 上)

mysql - 在 AWS RDS 上混合使用 MyISAM 和 InnoDB 的问题

地形导入 : invalid index

amazon-cloudfront - 动态地将源/缓存行为添加到现有的 CloudFront 发行版