Terraform-AWS多个子网问题

Terraform-AWS多个子网问题,terraform,terraform-provider-aws,Terraform,Terraform Provider Aws,我试图部署多个ec2实例,其中每个Web服务器ec2实例位于不同的子网中,而应用服务器实例位于特定的子网中 当使用count参数时,每个Web服务器被正确地部署在不同的子网中,但应用程序实例被部署在相同的子网中,而不是我在下面给出的应用程序资源部分中指定的两个子网中 如何指定要在特定子网中创建的应用程序服务器,这些子网是使用下面的“公共子网资源”部分中指定的计数参数创建的 变量声明: 公共子网资源: 专用子网资源: Web服务器资源: 应用程序资源: 我不知道你想在你的工作中做什么: su

我试图部署多个ec2实例,其中每个Web服务器ec2实例位于不同的子网中,而应用服务器实例位于特定的子网中

当使用count参数时,每个Web服务器被正确地部署在不同的子网中,但应用程序实例被部署在相同的子网中,而不是我在下面给出的应用程序资源部分中指定的两个子网中

如何指定要在特定子网中创建的应用程序服务器,这些子网是使用下面的“公共子网资源”部分中指定的计数参数创建的

变量声明:

公共子网资源:

专用子网资源:

Web服务器资源:

应用程序资源:


我不知道你想在你的工作中做什么:

  subnet_id              = "${element(aws_subnet.qasubnet_private.*.id,0)}"
  subnet_id              = "${element(aws_subnet.qasubnet_private.*.id,1)}"`
在资源aws_instance.appserver中,它应该只是一个子网_id引用:

  subnet_id              = "${element(aws_subnet.qasubnet_private.*.id,count.index)}"

使用count语句,这将为每个子网提供一个实例。

谢谢@James Woolfenden。是的,我知道我指定的代码是错误的,我正在努力解决这个问题。我在该部分尝试的是手动指定2个子网。4使用专用子网资源部分中的count参数动态创建子网。如果我使用您指定的子网\u id,则应用服务器将在所有4个子网中创建,但我只希望在2个子网中创建。@Sreeraju V,James'解决方案就是您想要做的。如果count为2,则count.index为0,1。该代码将创建两个应用程序服务器实例,第一个实例位于专用子网0中,第二个实例位于专用子网1中。它不会创建4个实例。
resource "aws_subnet" "qasubnet_private" {
count = "${length(var.subnet_private_cidr)}"
vpc_id = "${aws_vpc.qa_vpc.id}"
cidr_block = "${element(var.subnet_private_cidr,count.index)}"
availability_zone = "${element(var.azs,count.index)}"
tags { 
       Name = "QASUBNET_PRIVATE-${count.index+1}"
}
}
resource "aws_instance" "webserver" {
count = "${length(var.subnet_public_cidr)}"
ami = "${var.webserver_ami}"
instance_type = "t2.medium"
vpc_security_group_ids = ["${aws_security_group.webserver.id}"]
key_name = "${var.aws_key_name}"
subnet_id = "${element(aws_subnet.qasubnet_public.*.id,count.index)}"
}
resource "aws_instance" "appserver" {
count = 2
ami = "${var.appserver_ami}"
instance_type = "t2.medium"
vpc_security_group_ids = ["${aws_security_group.appserver.id}"]
key_name = "${var.aws_key_name}"
subnet_id = "${element(aws_subnet.qasubnet_private.*.id,0)}"
subnet_id = "${element(aws_subnet.qasubnet_private.*.id,1)}"
}
  subnet_id              = "${element(aws_subnet.qasubnet_private.*.id,0)}"
  subnet_id              = "${element(aws_subnet.qasubnet_private.*.id,1)}"`
  subnet_id              = "${element(aws_subnet.qasubnet_private.*.id,count.index)}"