terraform { required_providers { proxmox = { source = "bpg/proxmox" version = "0.93.0" } } } provider "proxmox" { endpoint = var.proxmox_endpoint api_token = var.proxmox_api_token insecure = true ssh { agent = true username = "root" } } locals { traefik_services = { bookshelf = module.bookshelf.traefik_service gitea = module.gitea.traefik_service fefan = module.fefan.traefik_service listmonk = module.listmonk.traefik_service } } resource "local_file" "traefik_config" { filename = "${path.module}/services.yml" content = templatefile("${path.module}/templates/traefik.services.tpl", { services = local.traefik_services }) } resource "null_resource" "deploy_traefik_config" { depends_on = [ local_file.traefik_config, module.gateway ] triggers = { config_sha = sha256(local_file.traefik_config.content) } provisioner "file" { source = "${path.module}/services.yml" destination = "/home/gateway/services.yaml" connection { type = "ssh" host = module.gateway.vm_ip_address user = "gateway" agent = true } } } module "gateway" { source = "./modules/apps/gateway" providers = {} vm_ip_address = "192.168.1.89" name = "gateway" hostname = "gateway" domain = "aldon.fr" vm_id = 200 node_name = "mop" template_id = 103 cores = 2 memory = 2048 balloon = 1024 disk_size = 16 ssh_public_key = var.ssh_public_key proxmox_host_ip = var.proxmox_host_ip } module "gitea" { source = "./modules/apps/gitea" providers = {} vm_ip_address = "192.168.1.90" name = "gitea" hostname = "gitea" domain = "aldon.fr" vm_id = 212 node_name = "mop" template_id = 103 cores = 2 memory = 2048 balloon = 1024 disk_size = 16 ssh_public_key = var.ssh_public_key proxmox_host_ip = var.proxmox_host_ip } # Needs gitea module "bookshelf" { source = "./modules/apps/bookshelf" providers = {} vm_ip_address = "192.168.1.91" depends_on = [ module.gitea ] name = "bookshelf" hostname = "bookshelf" domain = "aldon.fr" vm_id = 211 node_name = "mop" template_id = 103 cores = 1 memory = 1024 balloon = 1024 disk_size = 16 ssh_public_key = var.ssh_public_key proxmox_host_ip = var.proxmox_host_ip } # Needs gitea module "fefan" { source = "./modules/apps/fefan" providers = {} vm_ip_address = "192.168.1.92" depends_on = [ module.gitea ] name = "fefan" hostname = "fefan" domain = "fefan.fr" vm_id = 213 node_name = "mop" template_id = 103 cores = 1 memory = 1024 balloon = 1024 disk_size = 16 ssh_public_key = var.ssh_public_key proxmox_host_ip = var.proxmox_host_ip } module "listmonk" { source = "./modules/apps/listmonk" providers = {} vm_ip_address = "192.168.1.93" depends_on = [] name = "listmonk" hostname = "listmonk" domain = "fefan.fr" vm_id = 214 node_name = "mop" template_id = 103 cores = 1 memory = 2048 balloon = 1024 disk_size = 16 ssh_public_key = var.ssh_public_key proxmox_host_ip = var.proxmox_host_ip } # module "keycloak" { # source = "./modules/apps/keycloak" # providers = {} # vm_ip_address = "192.168.1.94" # depends_on = [] # name = "keycloak" # hostname = "keycloak" # domain = "aldon.fr" # vm_id = 215 # node_name = "mop" # template_id = 103 # cores = 1 # memory = 2048 # balloon = 1024 # disk_size = 16 # ssh_public_key = var.ssh_public_key # proxmox_host_ip = var.proxmox_host_ip # }