首页 > 解决方案 > terraform:根据资源计数创建列表

问题描述

我们有一堆实例(我知道......牛,不是宠物,但在这种情况下,这些真的是宠物)

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

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

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

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

但这当然行不通。

仅当它们的计数不为零时,是否可以动态创建实例 ID 列表?

我知道这违背了粮食,但如果这是可能的,那就太棒了。

标签: terraform

解决方案


使用 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根据收集的数据创建

推荐阅读