refactor: simplify project structure

This commit is contained in:
Yuris Cakranegara
2025-06-07 14:58:28 +10:00
parent 3ed0b402f5
commit c4775366e8
42 changed files with 441 additions and 1024 deletions

59
main.tf
View File

@@ -1,49 +1,24 @@
// Root module that orchestrates all environments
// This unified approach keeps a single entry point while organizing by function
// Network infrastructure
module "network" {
source = "./environments/network"
// Cloudflare variables
cloudflare_api_token = var.cloudflare_api_token
cloudflare_account_id = var.cloudflare_account_id
cloudflare_zone_id = var.cloudflare_zone_id
domain = var.domain
module "cloudflare_globals" {
source = "./modules/00-globals/cloudflare"
}
// Core infrastructure (monitoring, globals)
module "core" {
source = "./environments/core"
depends_on = [module.network]
timezone = var.timezone
// Watchtower variables
watchtower_enable_notifications = var.watchtower_enable_notifications
watchtower_notification_url = var.watchtower_notification_url
module "watchtower" {
source = "./modules/20-services-apps/watchtower"
}
// Application services
module "services" {
source = "./environments/services"
depends_on = [module.core, module.network]
timezone = var.timezone
puid = var.puid
pgid = var.pgid
data_dir = var.data_dir
// ActualBudget variables
actualbudget_port = var.actualbudget_port
// EmulatorJS variables
emulatorjs_frontend_port = var.emulatorjs_frontend_port
emulatorjs_config_port = var.emulatorjs_config_port
emulatorjs_backend_port = var.emulatorjs_backend_port
// Docker network variables
default_networks = [module.network.homelab_docker_network_name]
source = "./services"
}
module "homelab_cloudflared_tunnel" {
source = "./modules/01-networking/cloudflared-tunnel"
cloudflare_account_id = module.cloudflare_globals.cloudflare_account_id
cloudflare_zone_id = module.cloudflare_globals.cloudflare_zone_id
domain = module.cloudflare_globals.domain
tunnel_name = "homelab"
container_name = "cloudflared-homelab"
service_definitions = module.services.service_definitions
networks = [module.services.homelab_docker_network_name]
monitoring = true
}