【问题标题】:Terraform - A managed resource has not been declared in the root moduleTerraform - 未在根模块中声明托管资源
【发布时间】:2020-06-30 21:09:43
【问题描述】:

我正在尝试使用 terraform 创建 ec2 实例并设置负载均衡器,但我面临以下错误。如何在单个 main.tf 文件中创建实例并配置负载均衡器?

错误:引用未声明的资源

“aws_lb_target_group”“前端”:27:vpc_id =“${aws_vpc.terrafom-elb.id}” 未在根目录中声明托管资源“aws_vpc”“terrafom-elb” 模块.source`

代码:

  region = "us-east-1"
  access_key = "*********************"
  secret_key = "**********************"
}

resource "aws_instance" "terraform" {
  ami           = "ami-07ebfd5b3428b6f4d"
  instance_type = "t2.micro"
  security_groups    = ["nodejs","default"]
  tags = {
    Name = "terrafom-elb"
  }
}

resource "aws_lb" "front-end"{
  name = "front-end-lb"
  internal = false
  security_groups    = ["nodejs"]

}

resource "aws_lb_target_group" "front-end" {
  name     = "front-end"
  port     = 8989
  protocol = "HTTP"
  vpc_id   = "${aws_vpc.terrafom-elb.id}"
  depends_on = [aws_instance.terraform]
}

【问题讨论】:

  • 此配置中确实没有aws_vpc 资源。您可以分享包含它的其余配置吗?
  • 或者它是你想要使用的数据源?在这种情况下,您可以改用 data.aws_vpc.terraform_elb。如果不是,Matt 是对的,剩下的配置需要理解这个问题
  • "r" 在 vpc_id = "${aws_vpc.terrafom-elb.id}" 中缺失

标签: terraform terraform-provider-aws


【解决方案1】:

您可以在顶部添加data 结构并将VPC ID 作为变量传递:

data "aws_vpc" "selected" {
  id = var.vpc_id
}

并将其引用为vpc_id = data.aws_vpc.selected.id

【讨论】:

    【解决方案2】:

    在您分配 vpc_id 的地方有一个错字:

    vpc_id   = "${aws_vpc.terrafom-elb.id}"
    

    应该是:

    vpc_id   = "${aws_vpc.terraform-elb.id}"
    

    注意单词“terraform”中缺少的“r”

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-26
      • 2021-05-31
      • 2018-12-29
      相关资源
      最近更新 更多