107 lines
3.6 KiB
HCL
107 lines
3.6 KiB
HCL
# =============================================================================
|
|
# 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
|
|
volume_size = var.forgejo_volume_size
|
|
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]
|
|
}
|