terraform:基于资源计数创建列表

terraform:基于资源计数创建列表,terraform,Terraform,我们有很多例子(我知道……牛,不是宠物,但在这种情况下,它们真的是宠物) 我们有一个ELB,我们希望根据实例的计数变量动态添加实例,如下所示: resource "aws_elb" "read_slaves" { instances = ["${aws_instance.read_.*.id}"] 当然,这是行不通的 只有当实例ID的计数不为零时,才可以动态创建实例ID列表吗 我知道这有悖常理,但如果这是可能的话,那就太棒了。对于Terraform 0.12来说,这会容易得多,但现在类似的

我们有很多例子(我知道……牛,不是宠物,但在这种情况下,它们真的是宠物)

我们有一个ELB,我们希望根据实例的计数变量动态添加实例,如下所示:

resource "aws_elb" "read_slaves" {
  instances = ["${aws_instance.read_.*.id}"]
当然,这是行不通的

只有当实例ID的计数不为零时,才可以动态创建实例ID列表吗


我知道这有悖常理,但如果这是可能的话,那就太棒了。

对于Terraform 0.12来说,这会容易得多,但现在类似的东西可以:

[...]
resource "aws_instance" "read_01" {
  [...]
  count = "${var.read_01_count}"
  tags {
    Role = "read_slave"
  }
}

data "aws_instances" "read-slaves" {
  instance_tags {
    Role = "read_slave"
  }
  // optional filters
}

resource "aws_elb" "read_slaves" {
  instances = ["${data.aws_instances.read-slaves.ids}"]

  listener {
    ...
  }
}
因此:

  • 标记每个充当读从属的实例
  • 收集
    aws\u进口清单
  • 根据收集的数据创建aws_elb

值得指出的是,这在first apply上不起作用,因为数据源找不到任何实例。
[...]
resource "aws_instance" "read_01" {
  [...]
  count = "${var.read_01_count}"
  tags {
    Role = "read_slave"
  }
}

data "aws_instances" "read-slaves" {
  instance_tags {
    Role = "read_slave"
  }
  // optional filters
}

resource "aws_elb" "read_slaves" {
  instances = ["${data.aws_instances.read-slaves.ids}"]

  listener {
    ...
  }
}