簡體   English   中英

如何在不使用 terraform 中的計數的情況下獲取列表中的多個值?

[英]How to get multiple values in a list without using count in terraform?

我正在使用 terraform 中的計數創建多個資源。 例如:

resource "aws_subnet" "rSubnetMGMT" {
  count = length(var.vletter)
  availability_zone = "${var.vRegion}${var.vletter[count.index]}"
  vpc_id     = aws_vpc.rVPCMGMT.id
  cidr_block = var.vSubnetMGMTCIDR
  map_public_ip_on_launch = "true"

  tags = {
    Name = "${var.vWorkloadShortCode}-mgmt-MGMT- ${var.vRegion}${var.vletter[count.index]}"
    SubnetType = "MGMT"

  }
}

這里 vletter = ["a","b","c"] 所以這會為每個可用區創建 3 個子網,現在我想創建一個“aws_autoscaling_group”,它需要一個 vpc_zone_identifier 列表,即我創建的子網 ID

resource "aws_autoscaling_group" "rAutoScalingGroup" {
  count = lenght(var.vletter)
  max_size                  = var.vMaxNoofInstances
  min_size                  = var.vMinNoofInstances
  launch_configuration      = aws_launch_configuration.rLaunchConfiguration.name
  vpc_zone_identifier       = [aws_subnet.rSubnetMGMT[count.index].id ]
  metrics_granularity       = 1Minute
  enabled_metrics           = [GroupInServiceInstances]
  load_balancers = aws_elb.rLoadBalancer.name

  tag {
    Name                 = "${var.vInstanceShortNameBAS}-asg"
  }
}

但是如果我在創建資源 (aws_autoscaling_group) 時使用計數,它將為每個子網創建多個資源,即 3 個不同的自動縮放組,但在這里我只想要我之前創建的所有子網 ID。 如何在不創建多個資源的情況下實現這一目標?

您可以使用 splat 運算符: aws_subnet.rSubnetMGMT.*.id ,它將解析為所創建子網的 ID 列表。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM