201 lines
3.8 KiB
HCL
201 lines
3.8 KiB
HCL
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
|
|
# } |