Terraform-具有相同aws_instance资源的多个子网

Jam*_*mes 1 amazon-web-services terraform

我试图部署多个EC2实例,每个实例使用相同的aws_instance资源块在不同的子网中。

当我将count参数设置为多个服务器时,它将在同一子网中全部建立它们。

有没有办法通过Terraform做到这一点?

在下面,您将找到我的Terraform块:

resource "aws_instance" "ec2-instance" {
  ami                    = "${var.ec2_ami}"
  instance_type          = "${var.instance_type}"
  key_name               = "${var.key_name}"
  vpc_security_group_ids = ["${var.security_group}"]

  subnet_id = "${var.subnet_id}"
  count     = "${var.count}"

  root_block_device {
    volume_size = "${var.root_volume_size}"
    volume_type = "${var.root_volume_type}"
  }

  tags {
    Name = "${var.app_name}"
  }
}
Run Code Online (Sandbox Code Playgroud)

glu*_*cas 6

在terraform样本中,您正在使用count创建资源的多个实例,但是为每个实例(var.subnet_id)指定相同的子网。

您可以使用计数索引为每个实例将资源属性设置为不同的值。例如,您可以将子网列表定义为变量,然后使用element()根据计数索引选择一个。

variable "subnet_ids" {
  default =  [ "s1", "s2", "s3" ]
}

resource "aws_instance" "ec2-instance"
{
  count = "${var.count}"
  subnet_id = "${element(var.subnet_ids, count.index)}"

 # rest of config as before...
}
Run Code Online (Sandbox Code Playgroud)

  • 如今,我可能会建议使用`list(index,index)`之上的`list [index]`语法,但这绝对是正确的方法。结合使用aws_subnet_ids数据源时,效果更好! (2认同)