elb-private-for-moose-only.tf 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. #------------------------------------------------------------------------------
  2. # An external ALB for the indexers for HEC
  3. #------------------------------------------------------------------------------
  4. #########################
  5. # DNS Entry
  6. module "private_dns_record_hec_pvt" {
  7. source = "../../../submodules/dns/private_CNAME_record"
  8. enabled = local.is_moose ? true : false
  9. name = "${var.prefix}-hec"
  10. target_dns_names = local.is_moose ? [ aws_lb.hec_pvt[0].dns_name ] : [ "na" ]
  11. dns_info = var.dns_info
  12. providers = {
  13. aws.c2 = aws.c2
  14. }
  15. }
  16. #########################
  17. # Certificate - NOTE: Public certificate for a private HEC
  18. resource "aws_acm_certificate" "hec_pvt_cert" {
  19. count = local.is_moose ? 1 : 0
  20. domain_name = "${var.prefix}-hec.${var.dns_info["private"]["zone"]}"
  21. validation_method = "DNS"
  22. tags = merge(var.standard_tags, var.tags)
  23. }
  24. resource "aws_acm_certificate_validation" "hec_pvt_cert_validation" {
  25. certificate_arn = local.is_moose ? aws_acm_certificate.hec_pvt_cert[0].arn : ""
  26. validation_record_fqdns = [for record in aws_route53_record.hec_pvt_cert_validation: record.fqdn] # will be empty if not moose
  27. }
  28. resource "aws_route53_record" "hec_pvt_cert_validation" {
  29. provider = aws.mdr-common-services-commercial
  30. for_each = ( local.is_moose ? {
  31. for dvo in aws_acm_certificate.hec_pvt_cert[0].domain_validation_options: dvo.domain_name => {
  32. name = dvo.resource_record_name
  33. record = dvo.resource_record_value
  34. type = dvo.resource_record_type
  35. }
  36. } : {}
  37. )# Empty map if not moose
  38. allow_overwrite = true
  39. name = each.value.name
  40. records = [each.value.record]
  41. ttl = 60
  42. type = each.value.type
  43. zone_id = var.dns_info["public"]["zone_id"]
  44. }
  45. #########################
  46. # ELB
  47. resource "aws_lb" "hec_pvt" {
  48. count = local.is_moose ? 1 : 0
  49. tags = merge(var.standard_tags, var.tags)
  50. name = "${var.prefix}-hec-private"
  51. load_balancer_type = "application"
  52. security_groups = [ aws_security_group.hec_pvt_elb_security_group[0].id ]
  53. subnets = var.private_subnets
  54. internal = true
  55. }
  56. resource "aws_lb_listener" "hec_pvt_443" {
  57. count = local.is_moose ? 1 : 0
  58. load_balancer_arn = aws_lb.hec_pvt[0].arn
  59. port = 443
  60. protocol = "HTTPS"
  61. ssl_policy = "ELBSecurityPolicy-TLS-1-2-2017-01"
  62. certificate_arn = aws_acm_certificate.hec_pvt_cert[0].arn
  63. default_action {
  64. type = "forward"
  65. target_group_arn = aws_lb_target_group.hec_pvt_8088[0].arn
  66. }
  67. }
  68. resource "aws_lb_listener" "hec_pvt_8088" {
  69. count = local.is_moose ? 1 : 0
  70. load_balancer_arn = aws_lb.hec_pvt[0].arn
  71. port = 8088
  72. protocol = "HTTPS"
  73. ssl_policy = "ELBSecurityPolicy-TLS-1-2-2017-01"
  74. certificate_arn = aws_acm_certificate.hec_pvt_cert[0].arn
  75. default_action {
  76. type = "forward"
  77. target_group_arn = aws_lb_target_group.hec_pvt_8088[0].arn
  78. }
  79. }
  80. resource "aws_lb_target_group" "hec_pvt_8088" {
  81. count = local.is_moose ? 1 : 0
  82. name = "${var.prefix}-hec-pvt-targets"
  83. port = 8088
  84. protocol = "HTTPS"
  85. target_type = "instance"
  86. vpc_id = var.vpc_id
  87. health_check {
  88. path = "/services/collector/health/1.0"
  89. protocol = "HTTPS"
  90. }
  91. }
  92. # Attach the instnaces to the ELB
  93. resource "aws_autoscaling_attachment" "hec_pvt_asg_attachments" {
  94. for_each = local.is_moose ? toset([ module.indexer0.asg_name[0], module.indexer1.asg_name[0], module.indexer2.asg_name[0] ]) : []
  95. alb_target_group_arn = aws_lb_target_group.hec_pvt_8088[0].arn
  96. autoscaling_group_name = each.key
  97. }