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

时间:2018-11-13 12:18:03

标签: terraform

我们有很多实例(我知道...牛,不是宠物,但在这种情况下,它们确实是宠物)

resource "aws_instance" "read_00" {
  count = "${var.read_00_count}"

resource "aws_instance" "read_01" {
  count = "${var.read_01_count}"

我们有一个ELB,我们要在其中基于实例的count变量动态添加实例,如下所示:

resource "aws_elb" "read_slaves" {
  instances = ["${aws_instance.read_.*.id}"]

但是那当然行不通。

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

我知道这与事实背道而驰,但是如果可能的话,那就太棒了。

1 个答案:

答案 0 :(得分:1)

使用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_intances的列表
  • 根据收集的数据创建aws_elb