首页 文章

Terraform Map 列表

提问于
浏览
0

我目前有一个单一的资源定义

aws_ebs_volume&aws_volume_attachment

我使用基于变量的计数来确定我想要创建的设备数量,然后计算附件的计数:

data_volumes = ["50"]
data_device = ["xvde"]

resource "aws_ebs_volume" "datavolumes" {
  count             = "${length(var.data_volumes)}"
  size              = "${var.data_volumes[count.index]}"
  tags              = "${var.instance_tags}"
  encrypted         = "true"
  availability_zone = "us-east-2b"
  kms_key_id        = "${var.kms_key}"
}

resource "aws_volume_attachment" "attachvolumes" {
  count       = "${length(var.data_volumes)}"
  device_name = "${var.data_device[count.index]}"
  volume_id   = "${aws_ebs_volume.datavolumes.*.id[count.index]}"
  instance_id = "${aws_instance.general.id}"
}

我正在努力寻找一种方法为每个创建的卷分配唯一标签,因为你可以看到我为每个卷使用了“instance_tags”的静态列表,但我想要有唯一的标签适用于每个卷 . 我试图避免必须指定资源/卷,但此时可能最简单 .

希望有人可以帮助我了解它是否可能以及它的外观示例 .

1 回答

  • 0

    我想我发现了一种适用于我想要实现的方法:

    resource "aws_ebs_volume" "datavolumes" {
      count = "${length(var.data_volumes)}"
      size  = "${var.data_volumes[count.index]}"
      tags = "${merge(
        var.instance_tags,
        map(
          "DriveLetter", "${var.data_letters[count.index]}",
          "DriveLabel", "${var.data_labels[count.index]}"
        )
      )}"
    
    data_volumes = ["50","50","50"]
    data_device = ["xvde","xvdf","xvdg"]
    data_letters = ["E:", "F:", "G:"]
    data_labels = ["Data", "Logs", "TempDB"]
    

    这为我提供了每个卷具有唯一标记属性的唯一EBS卷,并维护我的单个资源

相关问题