# ============================================================================= # realms.india - DigitalOcean Infrastructure (Phase A: Jump Host + Forgejo) # ============================================================================= locals { common_tags = concat([ var.project_name, var.environment, "terraform-managed" ], var.tags) } # ============================================================================= # VPC Module # ============================================================================= module "vpc" { source = "./modules/vpc" name = "${var.project_name}-vpc-${var.environment}" region = var.region ip_range = var.vpc_ip_range description = "VPC for ${var.project_name} ${var.environment} environment" } # ============================================================================= # SSH Keys Module # ============================================================================= module "ssh_keys" { source = "./modules/ssh_keys" project_name = var.project_name environment = var.environment admin_ssh_public_keys = var.admin_ssh_public_keys } # ============================================================================= # Jump Host Module (Bastion) # ============================================================================= module "jump_host" { source = "./modules/jump_host" project_name = var.project_name environment = var.environment region = var.region vpc_uuid = module.vpc.vpc_id vpc_ip_range = var.vpc_ip_range ssh_keys = module.ssh_keys.all_ssh_key_ids droplet_size = var.jump_host_size droplet_image = var.jump_host_image ssh_port = var.jump_host_ssh_port enable_backups = var.enable_droplet_backups tags = local.common_tags internal_private_key = module.ssh_keys.internal_private_key depends_on = [module.vpc, module.ssh_keys] } # ============================================================================= # Forgejo Module # ============================================================================= module "forgejo" { source = "./modules/forgejo" project_name = var.project_name environment = var.environment region = var.region vpc_uuid = module.vpc.vpc_id vpc_ip_range = var.vpc_ip_range ssh_keys = module.ssh_keys.forgejo_ssh_key_ids droplet_size = var.forgejo_droplet_size droplet_image = var.forgejo_droplet_image ssh_port = var.forgejo_ssh_port git_ssh_port = var.forgejo_git_ssh_port domain = var.forgejo_domain enable_backups = var.enable_droplet_backups tags = local.common_tags # DNS Configuration manage_dns = var.manage_dns dns_zone = var.dns_zone dns_record_name = "qbit" # Creates qbit.realms.pub depends_on = [module.vpc, module.ssh_keys] } # ============================================================================= # Firewalls Module # ============================================================================= module "firewalls" { source = "./modules/firewalls" project_name = var.project_name environment = var.environment vpc_ip_range = var.vpc_ip_range jump_host_droplet_id = module.jump_host.droplet_id jump_host_ssh_port = var.jump_host_ssh_port forgejo_droplet_id = module.forgejo.droplet_id forgejo_git_ssh_port = var.forgejo_git_ssh_port depends_on = [module.jump_host, module.forgejo] }