elbclassic.tf 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. module "public_dns_record" {
  2. source = "../../submodules/dns/public_ALIAS_record"
  3. name = "github.${var.dns_info["public"]["zone"]}"
  4. target_dns_name = aws_elb.external.dns_name
  5. target_zone_id = aws_elb.external.zone_id
  6. dns_info = var.dns_info
  7. providers = {
  8. aws.mdr-common-services-commercial = aws.mdr-common-services-commercial
  9. }
  10. }
  11. module "public_dns_record_wildcard" {
  12. source = "../../submodules/dns/public_ALIAS_record"
  13. name = "*.github.${var.dns_info["public"]["zone"]}"
  14. target_dns_name = aws_elb.external.dns_name
  15. target_zone_id = aws_elb.external.zone_id
  16. dns_info = var.dns_info
  17. providers = {
  18. aws.mdr-common-services-commercial = aws.mdr-common-services-commercial
  19. }
  20. }
  21. resource "aws_elb" "external" {
  22. name_prefix = "gheext"
  23. subnets = var.public_subnets
  24. security_groups = [ aws_security_group.ghe_elb_external.id ]
  25. listener {
  26. instance_port = 443
  27. instance_protocol = "HTTPS"
  28. lb_port = 443
  29. lb_protocol = "HTTPS"
  30. ssl_certificate_id = aws_acm_certificate.cert_public.arn
  31. }
  32. listener {
  33. instance_port = 80
  34. instance_protocol = "HTTP"
  35. lb_port = 80
  36. lb_protocol = "HTTP"
  37. }
  38. listener {
  39. instance_port = 23
  40. instance_protocol = "TCP"
  41. lb_port = 22
  42. lb_protocol = "TCP"
  43. }
  44. health_check {
  45. healthy_threshold = 2
  46. unhealthy_threshold = 2
  47. timeout = 3
  48. target = "HTTPS:443/status"
  49. interval = 30
  50. }
  51. }
  52. resource "aws_proxy_protocol_policy" "external_proxy_protocol" {
  53. load_balancer = aws_elb.external.name
  54. instance_ports = [ "23", "444" ]
  55. }
  56. # Create a new load balancer attachment
  57. resource "aws_elb_attachment" "external_attachment" {
  58. count = var.instance_count
  59. elb = aws_elb.external.id
  60. instance = aws_instance.ghe[count.index].id
  61. }
  62. #--------------------------------------------------------------
  63. # Internal ELB
  64. #--------------------------------------------------------------
  65. resource "aws_route53_record" "github_internal" {
  66. zone_id = var.dns_info["private"]["zone_id"]
  67. name = "github.${var.dns_info["private"]["zone"]}"
  68. type = "CNAME"
  69. records = [aws_elb.internal.dns_name]
  70. ttl = "60"
  71. provider = aws.c2
  72. }
  73. resource "aws_route53_record" "github_internal_wildcard" {
  74. zone_id = var.dns_info["private"]["zone_id"]
  75. name = "*.github.${var.dns_info["private"]["zone"]}"
  76. type = "CNAME"
  77. records = [aws_elb.internal.dns_name]
  78. ttl = "60"
  79. provider = aws.c2
  80. }
  81. resource "aws_elb" "internal" {
  82. name_prefix = "gheint"
  83. internal = true
  84. subnets = var.private_subnets
  85. security_groups = [ aws_security_group.ghe_elb_internal.id ]
  86. listener {
  87. instance_port = 443
  88. instance_protocol = "HTTPS"
  89. lb_port = 443
  90. lb_protocol = "HTTPS"
  91. ssl_certificate_id = aws_acm_certificate.cert.arn
  92. }
  93. listener {
  94. instance_port = 8444
  95. instance_protocol = "TCP"
  96. lb_port = 8443
  97. lb_protocol = "TCP"
  98. }
  99. listener {
  100. instance_port = 23
  101. instance_protocol = "TCP"
  102. lb_port = 22
  103. lb_protocol = "TCP"
  104. }
  105. health_check {
  106. healthy_threshold = 2
  107. unhealthy_threshold = 2
  108. timeout = 3
  109. target = "HTTPS:443/status"
  110. interval = 30
  111. }
  112. }
  113. resource "aws_proxy_protocol_policy" "internal_proxy_protocol" {
  114. load_balancer = aws_elb.internal.name
  115. instance_ports = [ "23", "444", "8444"]
  116. }
  117. # Create a new load balancer attachment
  118. resource "aws_elb_attachment" "internal_attachment" {
  119. count = var.instance_count
  120. elb = aws_elb.internal.id
  121. instance = aws_instance.ghe[count.index].id
  122. }