相关疑难解决方法(0)

将输出变量与terraform一起使用时,'不是模块的有效输出'

我正在尝试使用AWS上的Hashicorp Terraform为新项目设置一些IaC.我正在使用模块,因为我希望能够在多个环境(staging,prod,dev等)中重用东西.

我很难理解在模块中设置输出变量的位置,以及我如何在另一个模块中使用它.任何指向这一点将非常感谢!

在创建EC2机器时,我需要使用在我的VPC模块中创建的一些东西(子网ID).我的理解是你不能从另一个模块中引用某些东西,所以我试图使用VPC模块中的输出变量.

我的网站上有以下内容 main.tf

module "myapp-vpc" {
  source     = "dev/vpc"
  aws_region = "${var.aws_region}"
}

module "myapp-ec2" {
 source     = "dev/ec2"
 aws_region = "${var.aws_region}"
 subnet_id  = "${module.vpc.subnetid"}
}
Run Code Online (Sandbox Code Playgroud)

dev/vpc 只需设置一些值并使用我的vpc模块:

module "vpc" {
  source = "../../modules/vpc"

  aws_region = "${var.aws_region}"

  vpc-cidr            = "10.1.0.0/16"
  public-subnet-cidr  = "10.1.1.0/24"
  private-subnet-cidr = "10.1.2.0/24"
}
Run Code Online (Sandbox Code Playgroud)

在我的vpc main.tf中,我aws_vpc和最后的aws_subnet资源(显示子网资源)之后有以下内容:

resource "aws_subnet" "public" {
  vpc_id                  = "${aws_vpc.main.id}"
  map_public_ip_on_launch = true
  availability_zone       = "${var.aws_region}a"
  cidr_block              = "${var.public-subnet-cidr}"
}

output "subnetid {
  value = "${aws_subnet.public.id}"
} …
Run Code Online (Sandbox Code Playgroud)

infrastructure amazon-web-services terraform

3
推荐指数
1
解决办法
4818
查看次数