main.tf 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. # Sadly, this would be far easier if we could use for_each in a module. We can't, so we're cutting and pasting
  2. # code from submodules/dns/private_A_record
  3. locals {
  4. # For reverse dns:
  5. # 1) Split the ip addresses into 4 octets
  6. private_octets = { for name, address in var.legacy_private_dns: name => regex("^(\\d+)\\.(\\d+)\\.(\\d+)\\.(\\d+)$", address) }
  7. # 2) Reverse them, but only if the first octet is 10 (maybe handle 192.168 and 172.16 later), and if enabled
  8. private_reverse_addresses = { for name, octets in local.private_octets: name => join(".", reverse(slice(octets, 1, 4))) if octets[0] == "10" }
  9. }
  10. # Private
  11. resource "aws_route53_record" "private" {
  12. for_each = var.legacy_private_dns
  13. name = each.key
  14. type = "A"
  15. ttl = 300
  16. zone_id = var.dns_info["private"]["zone_id"]
  17. records = [ each.value ]
  18. provider = aws.c2
  19. }
  20. resource "aws_route53_record" "private_cname" {
  21. for_each = var.legacy_private_cname_dns
  22. name = each.key
  23. type = "CNAME"
  24. ttl = 300
  25. zone_id = var.dns_info["private"]["zone_id"]
  26. records = [ each.value ]
  27. provider = aws.c2
  28. }
  29. # Reverse
  30. resource "aws_route53_record" "reverse_dns" {
  31. for_each = local.private_reverse_addresses
  32. name = each.value
  33. type = "PTR"
  34. ttl = 300
  35. zone_id = var.dns_info["reverse"]["zone_id"]
  36. records = [ "${each.key}.${var.dns_info["private"]["zone"]}." ]
  37. provider = aws.c2
  38. }
  39. # Public
  40. resource "aws_route53_record" "public" {
  41. for_each = var.legacy_public_dns
  42. name = each.key
  43. type = "A"
  44. ttl = 300
  45. zone_id = var.dns_info["public"]["zone_id"]
  46. records = [ each.value ]
  47. provider = aws.mdr-common-services-commercial
  48. }
  49. # Public cname
  50. resource "aws_route53_record" "public_cname" {
  51. for_each = var.legacy_public_cname_dns
  52. name = each.key
  53. type = "CNAME"
  54. ttl = 300
  55. zone_id = var.dns_info["public"]["zone_id"]
  56. records = [ each.value ]
  57. provider = aws.mdr-common-services-commercial
  58. }