nlb-splunk-data.tf 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273
  1. #------------------------------------------------------------------------------
  2. # An external NLB for the indexers for splunk-2-splunk
  3. #------------------------------------------------------------------------------
  4. resource "aws_eip" "nlb" {
  5. count = "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. subnet_mapping {
  25. subnet_id = element(var.public_subnets, 0)
  26. allocation_id = element(aws_eip.nlb.*.id, 0)
  27. }
  28. subnet_mapping {
  29. subnet_id = element(var.public_subnets, 1)
  30. allocation_id = element(aws_eip.nlb.*.id, 1)
  31. }
  32. subnet_mapping {
  33. subnet_id = element(var.public_subnets, 2)
  34. allocation_id = element(aws_eip.nlb.*.id, 2)
  35. }
  36. access_logs {
  37. bucket = "xdr-elb-${var.environment}"
  38. enabled = true
  39. }
  40. }
  41. resource "aws_lb_target_group" "nlb_targets" {
  42. name = "${var.prefix}-nlb-targets"
  43. port = 9998
  44. protocol = "TCP"
  45. vpc_id = var.vpc_id
  46. }
  47. resource "aws_autoscaling_attachment" "nlb_asg_attachments" {
  48. for_each = toset([module.indexer0.asg_name[0], module.indexer1.asg_name[0], module.indexer2.asg_name[0]])
  49. lb_target_group_arn = aws_lb_target_group.nlb_targets.arn
  50. autoscaling_group_name = each.key
  51. }
  52. resource "aws_lb_listener" "nlb_targets" {
  53. load_balancer_arn = aws_lb.nlb.arn
  54. port = 9998
  55. protocol = "TCP"
  56. default_action {
  57. target_group_arn = aws_lb_target_group.nlb_targets.arn
  58. type = "forward"
  59. }
  60. }