nlb-splunk-data.tf 2.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. #------------------------------------------------------------------------------
  2. # An external NLB for the indexers for splunk-2-splunk
  3. #------------------------------------------------------------------------------
  4. resource "aws_eip" "nlb" {
  5. count = "3" # Could be local.nlb_endpoint_count, but I'd rather reserve all 3
  6. vpc = true
  7. tags = merge(local.standard_tags, var.tags, { "Name" : "${var.prefix}-nlb" })
  8. }
  9. module "public_dns_record_nlb" {
  10. source = "../../../submodules/dns/public_A_record"
  11. name = "${var.prefix}-splunk-indexers"
  12. ip_addresses = aws_eip.nlb.*.public_ip
  13. dns_info = var.dns_info
  14. providers = {
  15. aws.mdr-common-services-commercial = aws.mdr-common-services-commercial
  16. }
  17. }
  18. resource "aws_lb" "nlb" {
  19. tags = merge(local.standard_tags, var.tags, { "Name" : "${var.prefix}-splunk-indexers-nlb" })
  20. name = "${var.prefix}-splunk-indexers-nlb"
  21. internal = false # tfsec:ignore:aws-elb-alb-not-public
  22. load_balancer_type = "network"
  23. #subnets = data.terraform_remote_state.infra.public_subnets
  24. enable_cross_zone_load_balancing = true
  25. subnet_mapping {
  26. subnet_id = element(var.public_subnets, 0)
  27. allocation_id = element(aws_eip.nlb.*.id, 0)
  28. }
  29. subnet_mapping {
  30. subnet_id = element(var.public_subnets, 1)
  31. allocation_id = element(aws_eip.nlb.*.id, 1)
  32. }
  33. subnet_mapping {
  34. subnet_id = element(var.public_subnets, 2)
  35. allocation_id = element(aws_eip.nlb.*.id, 2)
  36. }
  37. access_logs {
  38. bucket = "xdr-elb-${var.environment}"
  39. enabled = true
  40. }
  41. }
  42. resource "aws_lb_target_group" "nlb_targets" {
  43. name = "${var.prefix}-nlb-targets"
  44. port = 9998
  45. protocol = "TCP"
  46. vpc_id = var.vpc_id
  47. }
  48. resource "aws_autoscaling_attachment" "nlb_asg_attachments" {
  49. for_each = toset([module.indexer0.asg_name[0], module.indexer1.asg_name[0], module.indexer2.asg_name[0]])
  50. lb_target_group_arn = aws_lb_target_group.nlb_targets.arn
  51. autoscaling_group_name = each.key
  52. }
  53. resource "aws_lb_listener" "nlb_targets" {
  54. load_balancer_arn = aws_lb.nlb.arn
  55. port = 9998
  56. protocol = "TCP"
  57. default_action {
  58. target_group_arn = aws_lb_target_group.nlb_targets.arn
  59. type = "forward"
  60. }
  61. }