main.tf 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102
  1. locals {
  2. vpc_name = "${var.vpc_info["name"]}-${var.account_name}"
  3. }
  4. data "aws_availability_zones" "available" {
  5. state = "available"
  6. }
  7. module "vpc" {
  8. source = "terraform-aws-modules/vpc/aws"
  9. version = "~> v2.70"
  10. name = local.vpc_name
  11. cidr = var.vpc_info["cidr"]
  12. azs = slice(data.aws_availability_zones.available.names, 0, 3)
  13. private_subnets = [
  14. cidrsubnet(var.vpc_info["cidr"], 3, 0),
  15. cidrsubnet(var.vpc_info["cidr"], 3, 1),
  16. cidrsubnet(var.vpc_info["cidr"], 3, 2),
  17. ]
  18. public_subnets = [
  19. cidrsubnet(var.vpc_info["cidr"], 3, 4),
  20. cidrsubnet(var.vpc_info["cidr"], 3, 5),
  21. cidrsubnet(var.vpc_info["cidr"], 3, 6),
  22. ]
  23. enable_nat_gateway = var.enable_nat_gateway
  24. single_nat_gateway = var.single_nat_gateway
  25. one_nat_gateway_per_az = var.one_nat_gateway_per_az
  26. enable_vpn_gateway = false
  27. enable_dns_hostnames = true
  28. enable_dhcp_options = true
  29. # Endpoints without a DNS setting
  30. enable_dynamodb_endpoint = false
  31. enable_s3_endpoint = false
  32. # Endpoints with a dns setting
  33. enable_ec2_endpoint = false
  34. ec2_endpoint_private_dns_enabled = false
  35. ec2_endpoint_security_group_ids = [module.aws_endpoints_sg.security_group_id]
  36. enable_ec2messages_endpoint = false
  37. ec2messages_endpoint_private_dns_enabled = false
  38. ec2messages_endpoint_security_group_ids = [module.aws_endpoints_sg.security_group_id]
  39. enable_ecr_api_endpoint = false
  40. ecr_api_endpoint_private_dns_enabled = false
  41. ecr_api_endpoint_security_group_ids = [module.aws_endpoints_sg.security_group_id]
  42. enable_ecr_dkr_endpoint = false
  43. ecr_dkr_endpoint_private_dns_enabled = false
  44. ecr_dkr_endpoint_security_group_ids = [module.aws_endpoints_sg.security_group_id]
  45. enable_kms_endpoint = false
  46. kms_endpoint_private_dns_enabled = false
  47. kms_endpoint_security_group_ids = [module.aws_endpoints_sg.security_group_id]
  48. enable_logs_endpoint = false
  49. logs_endpoint_private_dns_enabled = false
  50. logs_endpoint_security_group_ids = [module.aws_endpoints_sg.security_group_id]
  51. enable_ssm_endpoint = false
  52. ssm_endpoint_private_dns_enabled = false
  53. ssm_endpoint_security_group_ids = [module.aws_endpoints_sg.security_group_id]
  54. enable_ssmmessages_endpoint = false
  55. ssmmessages_endpoint_private_dns_enabled = false
  56. ssmmessages_endpoint_security_group_ids = [module.aws_endpoints_sg.security_group_id]
  57. enable_sts_endpoint = false
  58. sts_endpoint_private_dns_enabled = false
  59. sts_endpoint_security_group_ids = [module.aws_endpoints_sg.security_group_id]
  60. enable_monitoring_endpoint = false
  61. monitoring_endpoint_private_dns_enabled = false
  62. monitoring_endpoint_security_group_ids = [module.aws_endpoints_sg.security_group_id]
  63. #dhcp_options_domain_name = var.dns_info["private"]["zone"]
  64. #dhcp_options_domain_name_servers = local.dns_servers
  65. dhcp_options_ntp_servers = ["169.254.169.123"]
  66. dhcp_options_tags = merge(local.standard_tags, var.tags)
  67. tags = merge(local.standard_tags, var.tags, { "Purpose" = var.vpc_info["purpose"] })
  68. nat_eip_tags = {
  69. "eip_type" = "natgw"
  70. Name = local.vpc_name
  71. }
  72. }
  73. resource "aws_flow_log" "flowlogs" {
  74. iam_role_arn = "arn:${var.aws_partition}:iam::${var.aws_account_id}:role/aws_services/flowlogs"
  75. log_destination = "arn:${var.aws_partition}:logs:${var.aws_region}:${var.aws_account_id}:log-group:vpc_flow_logs"
  76. traffic_type = "REJECT" # ALL is very noisy, and CIS only requires rejects.
  77. vpc_id = module.vpc.vpc_id
  78. tags = merge(local.standard_tags, var.tags)
  79. }