111 lines
3.3 KiB
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" {
|
|
}
|
|
}
|
|
|