【问题标题】:Terraform List of MapsTerraform 地图列表
【发布时间】:2018-02-16 02:48:43
【问题描述】:

我目前为

定义了一个资源

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”的静态列表,但我想将唯一标签应用于每个卷。我试图避免必须指定资源/卷,但此时可能是最简单的。

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

【问题讨论】:

  • var.instance_tags 看起来像什么?您是否还可以显示当前代码的结果以及您想要的结果输出?
  • instance_tags { Name = "TUE2AINFGEN10" Environment = "TST" Criticality = "3" Application = "General" AppType = "Geneal" BusinessOwner = "Platform" ITOwner = "Role-IT-PlatformTeam" ManagedBy = "Terraform" InformationClassification = "" } 我希望能够根据我们正在配置的 EBS 卷的迭代来更改其中一些标签的标签值。一卷的示例可能是:instance_tags { VolumeLabel = "Data" VolumeLetter = "E:" }
  • VolumeLabel = "Data" 是从哪里来的?还是应该一直有那个标签?
  • 抱歉造成混淆,这些是一组标签的示例,我想将它们应用于资源将遍历的卷中的一个。类似于资源如何能够遍历我的大小列表或列表,或者我如何让它遍历我的设备名称列表,我希望有一种方法可以遍历“地图列表”应用不同的标签集。

标签: terraform


【解决方案1】:

我想我找到了一种适合我想要完成的方法:

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 卷,每个卷都有唯一的标签属性,并维护我的单一资源

【讨论】:

  • terraform 会报错,因为它需要一个字符串,而您正在传递一个 data_volumes 列表
猜你喜欢
  • 2019-08-24
  • 2017-07-23
  • 2020-10-22
  • 1970-01-01
  • 2020-11-17
  • 2021-11-07
  • 2021-01-07
  • 2021-05-03
  • 1970-01-01
相关资源
最近更新 更多