簡體   English   中英

Terraform for_each 迭代超過 object

[英]Terraform for_each iteration over object

我對 Terraform 比較陌生,我希望簡化一些我需要使用 for_each 創建的私有 r53 區域。

我有以下本地文件,我想用它來創建私有區域和在這些區域中關聯的 A 記錄:

locals {
  private_zones = [
    {
      name = "foo.com"
      txt = [
      "This is the txt record for foo.com"]
      ttl = 300
      records = {
        "host1" = "192.168.0.1",
        "host2" = "192.168.0.2"
      }
    },
    {
      name = "bar.com"
      txt = [
      "This is the txt record for bar.com"]
      ttl = 300
      records = {
        "host1" = "192.168.0.3",
        "host2" = "192.168.0.4"
      }
    }
  ]
}

我找到了一些代碼,可以讓我遍歷本地以創建區域

resource "aws_route53_zone" "zone" {
  for_each = { for name in local.private_zones : name.name => name }
  name     = each.value.name

  vpc {
    vpc_id = <vpc_id>
  }
}

但我不知道如何使用每個本地的記錄列表在各自的區域中迭代和創建 A 記錄。

您將使用aws_route53_record扁平化private_zones


locals {
    private_zones_flat = merge([
        for zone in local.private_zones: {
            for host, ip in zone.records:
                "${zone.name}-${host}" => {
                    zone_name = zone.name
                    host = host
                    ip = ip
                }
        }
    ]...)
}

resource "aws_route53_record" "host" {
  for_each = local.private_zones_flat
  zone_id = aws_route53_zone.zone[each.value.zone_name].zone_id
  name    = each.value.host
  type    = "A"
  ttl     = "300"
  records = [each.value.ip]
}

暫無
暫無

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

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