unifi/unifi.nomad.hcl

111 lines
3.3 KiB
HCL

job "unifi" {
datacenters = [[ .noamd.datacenters | toJSON ]]
group "controller" {
network {
mode = "bridge"
port "stun" {}
}
service "unifi-inform" {
port = 8080
connect {
sidecar_service {}
sidecar_task {
[[ template "common/resources.tpl" .envoy ]]
}
}
tags = [
"[[ .env.traefik ]].enable=true",
"[[ .env.traefik ]].http.routers.unifi-inform[[ .env.suffix ]].rule=Host(`[[ (urlParse .unifi.inform.public_url).Host ]]`) && (Path(`/inform`) || PathPrefix(`/dl/firmware-cached`))",
"[[ .env.traefik ]].http.routers.unifi-inform[[ .env.suffix ]].entrypoints=[[ join .unifi.inform.traefik.entrypoints "," ]]",
"[[ .env.traefik ]].http.routers.unifi-inform[[ .env.suffix ]].middlewares=[[ join .unifi.inform.traefik.middlewares "," ]]"
]
}
service "unifi-controller" {
port = 8443
connect {
sidecar_service {}
sidecar_task {
[[ template "common/resources.tpl" .envoy ]]
}
}
tags = [
"[[ .env.traefik ]].enable=true",
"[[ .env.traefik ]].http.routers.unifi-controller[[ .env.suffix ]].rule=Host(`(urlParse .unifi.controller.public_url).Host`) && PathPrefix(`(urlParse .unifi.controller.public_url).Path`)",
"[[ .env.traefik ]].http.routers.unifi-controller[[ .env.suffix ]].entrypoints=[[ join .unifi.controller.traefik.entrypoints ]]",
"[[ .env.traefik ]].http.routers.unifi-controller[[ .env.suffix ]].tls=true",
"[[ .env.traefik ]].http.routers.unifi-controller[[ .env.suffix ]].scheme=https",
"[[ .env.traefik ]].http.routers.unifi-controller[[ .env.suffix ]].middlewares=[[ join .unifi.controller.traefik.middlewares "," ]]"
]
}
service "unifi-portal" {
port = 8880
connect {
sidecar_service {}
sidecar_task {
[[ template "common/resources.tpl" .envoy ]]
}
}
tags = [
"[[ .env.traefik ]].enable=true",
"[[ .env.traefik ]].http.routers.unifi-portal[[ .env.suffix ]].rule=Host(`(urlParse .unifi.guest_portal.public_url).Host`) && PathPrefix(`/guest`)",
"[[ .env.traefik ]].http.routers.unifi-portal[[ .env.suffix ]].entrypoints=[[ join .unifi.guest_portal.traefik.entrypoints ]]",
"[[ .env.traefik ]].http.routers.unifi-portal[[ .env.suffix ]].tls=true",
"[[ .env.traefik ]].http.routers.unifi-portal[[ .env.suffix ]].middlewares=[[ join .unifi.guest_portal.traefik.middlewares "," ]]"
]
}
service "unifi-stun" {
port = "stun"
tags = [
"[[ .env.traefik ]].enable=true",
"[[ .env.traefik ]].udp.routers.unifi-stun[[ .env.suffix ]].entrypoints=[[ join .unifi.stun.traefik.middlewares "," ]]",
"[[ .env.traefik ]].consulcatalog.connect=false"
]
}
}
[[ template "common/task.wait_for" dict
"ctx" .
"SERVICE_1" "unifi-mongo" ]]
task "unifi" {
driver = [[ .unifi.controller.driver | toJSON ]]
config {
image = [[ .unifi.controller.image | toJSON ]]
}
env {
[[ template "common/env.tpl" .unifi.controller.env ]]
}
template {
data =<<_EOF
[[ template "unifi/controller/system.properties" . ]]
_EOF
destination = "secrets/system.properties"
}
[[ template "common/resources.tpl" .unifi.controller.resources ]]
}
group "mongodb" {
}
}