devops/ships/mars/main.tf

288 lines
6.6 KiB
HCL

variable "hcloud_token" {
type = string
sensitive = true
}
variable "hdns_token" {
type = string
sensitive = true
}
variable "ssh_public_key_path" {
description = "Path to SSH public key"
type = string
}
variable "ssh_private_key_path" {
description = "Path to SSH private key"
type = string
}
variable "server" {
default = "mars"
}
variable "server_domain" {
default = "mars.fourlights.dev"
}
variable "ghcr_username" {}
variable "ghcr_token" {}
resource "null_resource" "is_up" {
connection {
type = "ssh"
host = var.server
user = "fourlights"
timeout = "10m"
agent = true
agent_identity = var.ssh_private_key_path
}
provisioner "remote-exec" {
inline = [
"whoami",
]
}
}
module "containers-network" {
wait_on = null_resource.is_up
source = "../../quadlets/network"
server_ip = var.server
ssh_private_key_path = var.ssh_private_key_path
name = "containers"
}
module "minio" {
wait_on = null_resource.is_up
source = "../../quadlets/modules/minio"
server_ip = var.server
server_domain = var.server_domain
ssh_private_key_path = var.ssh_private_key_path
https = true
}
module "valkey" {
wait_on = null_resource.is_up
source = "../../quadlets/modules/valkey"
server_ip = var.server
ssh_private_key_path = var.ssh_private_key_path
}
module "affine" {
wait_on = module.postgres.installed
source = "../../quadlets/modules/affine"
server_ip = var.server
server_domain = var.server_domain
ssh_private_key_path = var.ssh_private_key_path
# Pass postgres password for database connection
postgres_password = module.postgres.password
}
module "oci-proxy" {
wait_on = null_resource.is_up
source = "../../quadlets/modules/oci-proxy"
server_ip = var.server
ssh_private_key_path = var.ssh_private_key_path
}
module "arcane" {
wait_on = module.oci-proxy.installed
source = "../../quadlets/modules/arcane"
server_domain = var.server_domain
server_ip = var.server
ssh_private_key_path = var.ssh_private_key_path
}
module "qdrant" {
wait_on = null_resource.is_up
source = "../../quadlets/modules/qdrant"
server_ip = var.server
ssh_private_key_path = var.ssh_private_key_path
server_domain = var.server_domain
}
module "documentdb" {
wait_on = null_resource.is_up
source = "../../quadlets/modules/documentdb"
server_ip = var.server
ssh_private_key_path = var.ssh_private_key_path
}
#module "opensign" {
# wait_on = module.documentdb.installed
# source = "../../quadlets/modules/opensign"
# server_ip = var.server
# server_domain = var.server_domain
# ssh_private_key_path = var.ssh_private_key_path
#}
module "postgres" {
wait_on = null_resource.is_up
source = "../../quadlets/modules/postgres"
server_ip = var.server
ssh_private_key_path = var.ssh_private_key_path
}
module "rabbitmq" {
wait_on = null_resource.is_up
source = "../../quadlets/modules/rabbitmq"
server_ip = var.server
ssh_private_key_path = var.ssh_private_key_path
}
#module "plane" {
# count = 0
# wait_on = null_resource.is_up
# source = "../../quadlets/modules/plane"
# server_ip = var.server
# ssh_private_key_path = var.ssh_private_key_path
# server_domain = var.server_domain
#}
#module "airsonic-advanced" {
# wait_on = null_resource.is_up
# source = "../../quadlets/modules/airsonic-advanced"
# server_ip = var.server
# ssh_private_key_path = var.ssh_private_key_path
# server_domain = var.server_domain
#}
module "gonic" {
wait_on = null_resource.is_up
source = "../../quadlets/modules/gonic"
server_ip = var.server
server_domain = var.server_domain
ssh_private_key_path = var.ssh_private_key_path
}
module "tmail-web" {
wait_on = null_resource.is_up
source = "../../quadlets/modules/tmail-web"
server_ip = var.server
server_domain = var.server_domain
ssh_private_key_path = var.ssh_private_key_path
server_url = "https://mail.binarysunset.dev"
}
module "navidrome" {
wait_on = null_resource.is_up
source = "../../quadlets/modules/navidrome"
server_ip = var.server
ssh_private_key_path = var.ssh_private_key_path
server_domain = var.server_domain
}
module "mopidy" {
wait_on = null_resource.is_up
source = "../../quadlets/modules/mopidy"
server_ip = var.server
ssh_private_key_path = var.ssh_private_key_path
server_domain = var.server_domain
}
module "zot" {
wait_on = null_resource.is_up
source = "../../quadlets/modules/zot"
server_ip = var.server
ssh_private_key_path = var.ssh_private_key_path
server_domain = var.server_domain
}
# Deploy Plane after all dependencies are ready
#module "plane" {
# wait_on = null_resource.is_up
#
# source = "../../quadlets/modules/plane"
# server_ip = var.server
# server_domain = var.server_domain
# ssh_private_key_path = var.ssh_private_key_path
#
# # Pass credentials from existing services
# postgres_password = module.postgres.password
# minio_server = module.minio.server
# minio_access_key = module.minio.access_key
# minio_secret_key = module.minio.secret_key
# rabbitmq_username = module.rabbitmq.username
# rabbitmq_password = module.rabbitmq.password
#}
module "beets" {
wait_on = null_resource.is_up
source = "../../quadlets/modules/beets"
server_ip = var.server
server_domain = var.server_domain
ssh_private_key_path = var.ssh_private_key_path
}
module "deeptutor" {
count = 0
wait_on = null_resource.is_up
source = "../../quadlets/modules/deeptutor"
server_ip = var.server
server_domain = var.server_domain
ssh_private_key_path = var.ssh_private_key_path
}
output "psql_pw" {
value = module.postgres.password
sensitive = true
}
module "forgejo" {
wait_on = module.postgres.installed
source = "../../quadlets/modules/forgejo"
server_ip = var.server
server_domain = var.server_domain
ssh_private_key_path = var.ssh_private_key_path
# Pass postgres password for database connection
postgres_password = module.postgres.password
}
output "minio_app_urls" {
value = module.minio.app_urls
}
output "qdrant_api_key" {
value = module.qdrant.api_key
sensitive = true
}
#output "plane_app_urls" {
# value = module.plane.app_urls
#}
#
#output "plane_credentials" {
# value = module.plane.credentials
# sensitive = true
#}
#
#output "plane_main_url" {
# value = module.plane.main_url
#}
output "forgejo_app_urls" {
value = module.forgejo.app_urls
}
output "affine_app_urls" {
value = module.affine.app_urls
}
#output "deeptutor_app_urls" {
# value = module.deeptutor.app_urls
#}
output "tmail_web_app_urls" {
value = module.tmail-web.app_urls
}
#output "plane_credentials" {
#value = module.plane.credentials
#sensitive = true
#}