301 lines
8.4 KiB
HCL
301 lines
8.4 KiB
HCL
# module "nextcloud" {
|
|
# source = "./nextcloud"
|
|
#
|
|
# depends_on = [module.databases]
|
|
# }
|
|
|
|
module "backups" {
|
|
source = "./backups"
|
|
|
|
# In parent module
|
|
# depends_on = [module.databases]
|
|
}
|
|
|
|
module "media" {
|
|
source = "./media"
|
|
}
|
|
|
|
resource "nomad_job" "whoami" {
|
|
hcl2 {
|
|
enabled = true
|
|
vars = {
|
|
"count" = 1,
|
|
# "count" = "${2 * length(data.consul_service.nomad.service)}",
|
|
}
|
|
}
|
|
|
|
jobspec = file("${path.module}/whoami.nomad")
|
|
}
|
|
|
|
resource "nomad_job" "ipdvr" {
|
|
jobspec = file("${path.module}/ip-dvr.nomad")
|
|
}
|
|
|
|
resource "consul_config_entry" "nzbget_intents" {
|
|
depends_on = [nomad_job.ipdvr]
|
|
|
|
name = "nzbget"
|
|
kind = "service-intentions"
|
|
|
|
config_json = jsonencode({
|
|
Sources = [
|
|
{
|
|
Action = "allow"
|
|
Name = "sonarr"
|
|
Precedence = 9
|
|
Type = "consul"
|
|
},
|
|
]
|
|
})
|
|
}
|
|
|
|
# module "nzbget" {
|
|
# source "./levant"
|
|
#
|
|
# template_path = "service.nomad"
|
|
# variables = {
|
|
# name = "nzbget"
|
|
# image = "linuxserver/nzbget"
|
|
# service_port = 6789
|
|
# ingress = true
|
|
# env = jsonencode({
|
|
# PGID = 100
|
|
# PUID = 1001
|
|
# TZ = "America/Los_Angeles"
|
|
# })
|
|
# host_volumes = jsonencode([
|
|
# {
|
|
# name = "download"
|
|
# dest = "/srv/volumes/download"
|
|
# read_only = false
|
|
# },
|
|
# ])
|
|
# }
|
|
# }
|
|
#
|
|
# module "sonarr" {
|
|
# source = "./levant"
|
|
#
|
|
# template_path = "service.nomad"
|
|
# variables = {
|
|
# name = "sonarr"
|
|
# image = "linuxserver/sonarr"
|
|
# service_port = 8989
|
|
# ingress = true
|
|
# env = jsonencode({
|
|
# PGID = 100
|
|
# PUID = 1001
|
|
# TZ = "America/Los_Angeles"
|
|
#
|
|
# })
|
|
# host_volumes = jsonencode([
|
|
# {
|
|
# name = "sonarr-data"
|
|
# dest = "/config"
|
|
# read_only = false
|
|
# },
|
|
# {
|
|
# name = "tv-sonarr"
|
|
# dest = "/srv/volumes/media-write/TV Shows"
|
|
# read_only = false
|
|
# },
|
|
# {
|
|
# name = "download"
|
|
# dest = "/srv/volumes/download"
|
|
# read_only = false
|
|
# },
|
|
# ])
|
|
# }
|
|
# }
|
|
|
|
# resource "nomad_job" "photoprism" {
|
|
# jobspec = templatefile("services_tf.nomad", {
|
|
# vars = {
|
|
# name = "photoprism"
|
|
# image = "photoprism/photoprism:latest"
|
|
# ingress = true
|
|
# service_port = 2342
|
|
# sticky_disk = true
|
|
# healthcheck = "/library/login"
|
|
# env = {
|
|
# PHOTOPRISM_SITE_CAPTION = "AI-Powered Photos App"
|
|
# PHOTOPRISM_SITE_DESCRIPTION = "Fijolek home photos"
|
|
# PHOTOPRISM_SITE_TITLE = "PhotoPrism"
|
|
# PHOTOPRISM_SITE_URL = "https://photoprism.thefij.rocks:2342/" # server URL in the format "http(s)://domain.name(:port)/(path)"
|
|
# PHOTOPRISM_SPONSOR = "true"
|
|
# # Paths
|
|
# PHOTOPRISM_ORIGINALS_PATH = "/photoprism-media/Library"
|
|
# PHOTOPRISM_IMPORT_PATH = "/photoprism-media/Import"
|
|
# PHOTOPRISM_STORAGE_PATH = "$${NOMAD_TASK_DIR}/storage" # Storage PATH for generated files like cache and index
|
|
# # Unix permissions
|
|
# PHOTOPRISM_UID = 500
|
|
# PHOTOPRISM_GID = 100
|
|
# PHOTOPRISM_UMASK = 0000
|
|
# }
|
|
# mysql = true
|
|
# vault = true
|
|
# resources = {
|
|
# cpu = 100
|
|
# memory = 500
|
|
# memory_max = 1000
|
|
# }
|
|
# host_volumes = [
|
|
# {
|
|
# name = "photoprism-media"
|
|
# dest = "/photoprism-media"
|
|
# read_only = false
|
|
# },
|
|
# ]
|
|
# mysql_bootstrap = {
|
|
# vault_key = "kv/data/photoprism"
|
|
# }
|
|
# templates = [
|
|
# {
|
|
# data = <<EOF
|
|
# {{ with secret "kv/data/photoprism" -}}
|
|
# PHOTOPRISM_ADMIN_USER={{ .Data.data.admin_user }}
|
|
# PHOTOPRISM_ADMIN_PASSWORD={{ .Data.data.admin_password }}
|
|
# PHOTOPRISM_DATABASE_DRIVER=mysql
|
|
# PHOTOPRISM_DATABASE_NAME={{ .Data.data.db_name }}
|
|
# PHOTOPRISM_DATABASE_USER={{ .Data.data.db_user }}
|
|
# PHOTOPRISM_DATABASE_PASSWORD={{ .Data.data.db_pass }}
|
|
# PHOTOPRISM_DATABASE_SERVER="{{ env "NOMAD_UPSTREAM_ADDR_mysql_server" }}"
|
|
# {{ end -}}
|
|
# EOF
|
|
# dest_prefix = "$${NOMAD_SECRETS_DIR}/"
|
|
# dest = "env"
|
|
# env = true
|
|
# mount = false
|
|
# },
|
|
# ]
|
|
# }
|
|
# })
|
|
# }
|
|
|
|
# module "photoprism" {
|
|
# source = "IamTheFij/levant/nomad"
|
|
# version = "0.1.0"
|
|
#
|
|
# template_path = "service.nomad"
|
|
# variables = {
|
|
# name = "photoprism"
|
|
# image = "photoprism/photoprism:latest"
|
|
# ingress = true
|
|
# service_port = 2342
|
|
# sticky_disk = true
|
|
# healthcheck = "/library/login"
|
|
# env = jsonencode({
|
|
# PHOTOPRISM_SITE_CAPTION = "AI-Powered Photos App"
|
|
# PHOTOPRISM_SITE_DESCRIPTION = "Fijolek home photos"
|
|
# PHOTOPRISM_SITE_TITLE = "PhotoPrism"
|
|
# PHOTOPRISM_SITE_URL = "https://photoprism.thefij.rocks:2342/" # server URL in the format "http(s)://domain.name(:port)/(path)"
|
|
# PHOTOPRISM_SPONSOR = "true"
|
|
# # Paths
|
|
# PHOTOPRISM_ORIGINALS_PATH = "/photoprism-media/Library"
|
|
# PHOTOPRISM_IMPORT_PATH = "/photoprism-media/Import"
|
|
# PHOTOPRISM_STORAGE_PATH = "$${NOMAD_TASK_DIR}/storage" # Storage PATH for generated files like cache and index
|
|
# # Unix permissions
|
|
# PHOTOPRISM_UID = 500
|
|
# PHOTOPRISM_GID = 100
|
|
# PHOTOPRISM_UMASK = 0000
|
|
# })
|
|
# mysql = true
|
|
# vault = true
|
|
# host_volumes = jsonencode([
|
|
# {
|
|
# name = "photoprism-media"
|
|
# dest = "/photoprism-media"
|
|
# read_only = false
|
|
# },
|
|
# ])
|
|
# mysql_bootstrap = jsonencode({
|
|
# vault_key = "kv/data/photoprism"
|
|
# })
|
|
# templates = jsonencode([
|
|
# {
|
|
# data = <<EOF
|
|
# {{ with secret "kv/data/photoprism" -}}
|
|
# PHOTOPRISM_ADMIN_USER={{ .Data.data.admin_user }}
|
|
# PHOTOPRISM_ADMIN_PASSWORD={{ .Data.data.admin_password }}
|
|
# PHOTOPRISM_DATABASE_DRIVER=mysql
|
|
# PHOTOPRISM_DATABASE_NAME={{ .Data.data.db_name }}
|
|
# PHOTOPRISM_DATABASE_USER={{ .Data.data.db_user }}
|
|
# PHOTOPRISM_DATABASE_PASSWORD={{ .Data.data.db_pass }}
|
|
# PHOTOPRISM_DATABASE_SERVER="{{ env "NOMAD_UPSTREAM_ADDR_mysql_server" }}"
|
|
# {{ end -}}
|
|
# EOF
|
|
# dest_prefix = "$${NOMAD_SECRETS_DIR}/"
|
|
# dest = "env"
|
|
# env = true
|
|
# mount = false
|
|
# },
|
|
# ])
|
|
# }
|
|
# }
|
|
|
|
|
|
module "photoprism_module" {
|
|
source = "./service"
|
|
|
|
name = "photoprism"
|
|
image = "photoprism/photoprism:latest"
|
|
ingress = true
|
|
service_port = 2342
|
|
sticky_disk = true
|
|
healthcheck_path = "/library/login"
|
|
env = {
|
|
# UI
|
|
PHOTOPRISM_SITE_CAPTION = "AI-Powered Photos App"
|
|
PHOTOPRISM_SITE_DESCRIPTION = "Fijolek home photos"
|
|
PHOTOPRISM_SITE_TITLE = "PhotoPrism"
|
|
PHOTOPRISM_SITE_URL = "https://photoprism.thefij.rocks:2342/" # server URL in the format "http(s)://domain.name(:port)/(path)"
|
|
PHOTOPRISM_SPONSOR = "true"
|
|
# Worker config
|
|
PHOTOPRISM_WORKERS = 2
|
|
# Paths
|
|
PHOTOPRISM_ORIGINALS_PATH = "/photoprism-media/Library"
|
|
PHOTOPRISM_IMPORT_PATH = "/photoprism-media/Import"
|
|
PHOTOPRISM_STORAGE_PATH = "$${NOMAD_TASK_DIR}/storage" # Storage PATH for generated files like cache and index
|
|
# Unix permissions
|
|
PHOTOPRISM_UID = 500
|
|
PHOTOPRISM_GID = 100
|
|
PHOTOPRISM_UMASK = 0000
|
|
}
|
|
resources = {
|
|
cpu = 1000
|
|
memory = 2000
|
|
# memory_max = 2000
|
|
}
|
|
use_mysql = true
|
|
use_vault = true
|
|
host_volumes = [
|
|
{
|
|
name = "photoprism-media"
|
|
dest = "/photoprism-media"
|
|
read_only = false
|
|
},
|
|
]
|
|
mysql_bootstrap = {
|
|
vault_key = "kv/data/photoprism"
|
|
}
|
|
templates = [
|
|
{
|
|
data = <<EOF
|
|
{{ with secret "kv/data/photoprism" -}}
|
|
PHOTOPRISM_ADMIN_USER={{ .Data.data.admin_user }}
|
|
PHOTOPRISM_ADMIN_PASSWORD={{ .Data.data.admin_password }}
|
|
PHOTOPRISM_DATABASE_DRIVER=mysql
|
|
PHOTOPRISM_DATABASE_NAME={{ .Data.data.db_name }}
|
|
PHOTOPRISM_DATABASE_USER={{ .Data.data.db_user }}
|
|
PHOTOPRISM_DATABASE_PASSWORD={{ .Data.data.db_pass }}
|
|
PHOTOPRISM_DATABASE_SERVER="{{ env "NOMAD_UPSTREAM_ADDR_mysql_server" }}"
|
|
{{ end -}}
|
|
EOF
|
|
dest_prefix = "$${NOMAD_SECRETS_DIR}/"
|
|
dest = "env"
|
|
env = true
|
|
mount = false
|
|
},
|
|
]
|
|
}
|