nlb-splunk.tf 3.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. #------------------------------------------------------------------------------
  2. # Splunk2Splunk Requires an NLB
  3. #------------------------------------------------------------------------------
  4. resource "aws_eip" "alsi_splunk_nlb" {
  5. count = local.alsi_splunk_nlb ? 2 : 0
  6. vpc = true
  7. tags = merge(local.standard_tags, var.tags, { "Name" : "${var.prefix}-alsi-splunk" })
  8. }
  9. resource "aws_lb" "alsi_splunk_nlb" {
  10. count = local.alsi_splunk_nlb ? 1 : 0
  11. tags = merge(local.standard_tags, var.tags, { "Name" : "${var.prefix}-alsi-splunk" })
  12. name = "${var.prefix}-alsi-splunk-nlb"
  13. internal = false # tfsec:ignore:aws-elb-alb-not-public The NLB requires Internet exposure
  14. load_balancer_type = "network"
  15. #subnets = data.terraform_remote_state.infra.subnets
  16. enable_cross_zone_load_balancing = true
  17. subnet_mapping {
  18. subnet_id = element(var.subnets, 0)
  19. allocation_id = element(aws_eip.alsi_splunk_nlb.*.id, 0)
  20. }
  21. subnet_mapping {
  22. subnet_id = element(var.subnets, 1)
  23. allocation_id = element(aws_eip.alsi_splunk_nlb.*.id, 1)
  24. }
  25. access_logs {
  26. bucket = "xdr-elb-${var.environment}"
  27. enabled = true
  28. }
  29. }
  30. resource "aws_lb_target_group" "nlb_targets_9997" {
  31. count = local.alsi_splunk_nlb ? 1 : 0
  32. name = "${var.prefix}-alsi-splunk-nlb-9997"
  33. port = 9997
  34. protocol = "TCP"
  35. vpc_id = var.vpc_id
  36. }
  37. resource "aws_lb_listener" "nlb_targets_9997" {
  38. count = local.alsi_splunk_nlb ? 1 : 0
  39. load_balancer_arn = aws_lb.alsi_splunk_nlb[count.index].arn
  40. port = 9997
  41. protocol = "TCP"
  42. default_action {
  43. target_group_arn = aws_lb_target_group.nlb_targets_9997[count.index].arn
  44. type = "forward"
  45. }
  46. }
  47. resource "aws_lb_target_group_attachment" "alsi_nlb_target_9997_instance" {
  48. count = local.alsi_splunk_nlb ? local.alsi_workers : 0
  49. target_group_arn = aws_lb_target_group.nlb_targets_9997[0].arn
  50. target_id = aws_instance.worker[count.index].id
  51. port = 9997
  52. }
  53. resource "aws_lb_target_group" "nlb_targets_9998" {
  54. count = local.alsi_splunk_nlb ? 1 : 0
  55. name = "${var.prefix}-alsi-splunk-nlb-9998"
  56. port = 9998
  57. protocol = "TCP"
  58. vpc_id = var.vpc_id
  59. }
  60. resource "aws_lb_listener" "nlb_targets_9998" {
  61. count = local.alsi_splunk_nlb ? 1 : 0
  62. load_balancer_arn = aws_lb.alsi_splunk_nlb[count.index].arn
  63. port = 9998
  64. protocol = "TCP"
  65. default_action {
  66. target_group_arn = aws_lb_target_group.nlb_targets_9998[count.index].arn
  67. type = "forward"
  68. }
  69. }
  70. resource "aws_lb_target_group_attachment" "alsi_nlb_target_9998_instance" {
  71. count = local.alsi_splunk_nlb ? local.alsi_workers : 0
  72. target_group_arn = aws_lb_target_group.nlb_targets_9998[0].arn
  73. target_id = aws_instance.worker[count.index].id
  74. port = 9998
  75. }
  76. #########################
  77. # Security Groups
  78. # no security groups for NLB, access is controlled on the worker itself
  79. #########################
  80. # DNS Entry
  81. module "public_dns_record_alsi_nlb" {
  82. count = local.alsi_splunk_nlb ? 1 : 0
  83. source = "../../../submodules/dns/public_A_record"
  84. name = "${var.prefix}-alsi-splunk"
  85. ip_addresses = aws_eip.alsi_splunk_nlb.*.public_ip
  86. dns_info = var.dns_info
  87. providers = {
  88. aws.mdr-common-services-commercial = aws.mdr-common-services-commercial
  89. }
  90. }