0

我正在尝试制作 PTR 记录,但遇到了一些困难。这是用于 AAAA 记录的代码,它有效:

resource "dns_aaaa_record_set" "app-stage-dns" {
  count     = length(var.datacenter)
  zone      = format("%s.", var.dns_zone)
  name      = "app-stage-${var.datacenter[count.index]}.mydomain"
  addresses = [replace(openstack_compute_instance_v2.app-stage[count.index].access_ip_v6, "/\\[|\\]/", "")]
  ttl       = 300
}

我设置了一些变量:

dns_zone   = "mydomain.com"
dns_ptr_zone = "0.c.0.0.a.a.a.a.ip6.arpa"

ip地址示例:

  • aaaa:c0:4f0:2300:f816:3eff:fe52:7a19

最终结果应该是这样的:

  • 9.1.a.7.2.5.efffe3.6.1.8.f.0.0.3.2.0.f.4.0.0.c.0.0.aaaaip6.arpa

这是 PTR 记录的代码:

resource "dns_ptr_record" "app-stage-dns-ptr" {
  count = length(var.datacenter)
  zone  = format("%s.", var.dns_ptr_zone)
  ptr   = "app-stage-[count.index].mydomain.com."
  name  = strrev(tolist(dns_aaaa_record_set.app-stage-dns[count.index].addresses)[0])
  ttl   = 300
}

但有了这个我得到:

  • 91a7:25ef:ffe3:618f:0032:0f4:0c:20a2.0.c.0.0.aaaaip6.arpa。
4

1 回答 1

0

解决此问题的代码:

resource "dns_ptr_record" "dns-ptr-aaaa" {
  for_each = var.nodes
  zone  = format("%s.", var.dns_ptr_zone)
  ptr   = "${each.value}-${each.key}.${var.domain}."
  name  = strrev(join(".", [for s in split(":", replace(tolist(dns_aaaa_record_set.dns-aaaa[each.key].addresses)[0], "aaaa:c0:", "")): join(".", regex("(.)(.)(.)(.)$", "000${s}"))]))
  ttl   = 300
}
于 2021-03-19T22:25:12.877 回答