У меня есть внешний источник данных, который принимает один или несколько CIDR подсетей и возвращает данные json в виде карты обратного имени зоны DNS и IP-адресов, связанных с зоной
Данные выглядят так:
{"0.0.10.in-addr.arpa" = ["16,10.0.0.16,0", "17,10.0.0.17,1",]}
Я могу перебирать имена зон и создавать зоны route53, но я застрял в том, как перебрать ключ карты для каждой зоны, а затем создать записи route53.
data "external" "subnet_reverse_zone" {
program = [
"bash",
"${path.module}/subnet-reverse-zone.sh"]
query = {
# Example input as comma delimited string
#subnet = "10.0.0.16/28,10.0.0.32/28,10.0.0.48/28"
subnet = join(
",",
[
for netnum in range(1, length(var.availability_zones) + 1) :
cidrsubnet(aws_vpc.main.cidr_block, var.subnet_newbits, netnum)
]
)
}
}
locals {
reverse_zone_data = jsondecode(data.external.subnet_reverse_zone.result.zone)
}
resource "aws_route53_zone" "reverse_zone" {
count = length(keys(local.reverse_zone_data))
name = keys(local.reverse_zone_data)[count.index]
vpc {
vpc_id = aws_vpc.main.id
}
}
resource "aws_route53_record" "reverse_zone_record" {
count = ?
name = ?
type = "PTR"
records = [?]
zone_id = aws_route53_zone.reverse_zone.*.id
ttl = 300
depends_on = [aws_route53_zone.reverse_zone]
}
На основании имеющихся у меня данных я смогу создать 1 зону route53 и 2 записи в этой зоне.