2018-07-30 06:42:58 +00:00
|
|
|
locals {
|
2021-10-15 12:54:13 +00:00
|
|
|
default_labels = {
|
2018-08-02 18:29:39 +00:00
|
|
|
"managed.by" = "nebula"
|
|
|
|
}
|
|
|
|
|
2021-10-15 12:54:13 +00:00
|
|
|
web = {
|
|
|
|
"traefik.port" = var.web.port != null ? var.web.port : 80
|
|
|
|
"traefik.frontend.rule" = var.web.host != null ? "Host:${var.web.host}" : "Host:example.invalid"
|
|
|
|
"traefik.protocol" = var.web.protocol != null ? var.web.protocol : "http"
|
2018-08-02 18:29:39 +00:00
|
|
|
}
|
|
|
|
|
2021-10-15 12:54:13 +00:00
|
|
|
traefik_common_labels = {
|
2018-07-30 06:42:58 +00:00
|
|
|
"traefik.enable" = "true"
|
|
|
|
// HSTS
|
|
|
|
"traefik.frontend.headers.SSLTemporaryRedirect" = "true"
|
|
|
|
"traefik.frontend.headers.STSSeconds" = "2592000"
|
|
|
|
"traefik.frontend.headers.STSIncludeSubdomains" = "false"
|
|
|
|
// X-Powered-By, Server headers
|
2021-10-15 12:54:13 +00:00
|
|
|
"traefik.frontend.headers.customResponseHeaders" = var.xpoweredby
|
2018-07-30 06:42:58 +00:00
|
|
|
"traefik.frontend.headers.contentTypeNosniff" = "true"
|
|
|
|
"traefik.frontend.headers.browserXSSFilter" = "true"
|
2021-10-15 12:54:13 +00:00
|
|
|
"traefik.docker.network" = "traefik"
|
|
|
|
}
|
2018-07-30 06:42:58 +00:00
|
|
|
|
2021-10-15 12:54:13 +00:00
|
|
|
# if var.web.auth == true
|
|
|
|
traefik_auth_labels = {
|
|
|
|
"traefik.frontend.auth.basic" = var.auth_header
|
2018-07-30 06:42:58 +00:00
|
|
|
}
|
2018-08-02 18:29:39 +00:00
|
|
|
|
2021-10-15 12:54:13 +00:00
|
|
|
resource = {
|
|
|
|
memory = lookup(var.resource, "memory", 64)
|
|
|
|
memory_swap = lookup(var.resource, "memory_swap", 128)
|
2018-08-02 18:29:39 +00:00
|
|
|
}
|
2021-10-15 12:54:13 +00:00
|
|
|
|
|
|
|
labels = merge(
|
|
|
|
# Default labels are applied to every container
|
|
|
|
local.default_labels,
|
|
|
|
# Add the common traefik labels
|
|
|
|
var.web.expose ? local.traefik_common_labels : null,
|
|
|
|
# Apply the overwritten web labels only if the container is exposed
|
|
|
|
var.web.expose ? local.web : null,
|
|
|
|
# And finally a label for Basic Authentication if the service wants it
|
|
|
|
var.web.auth != null ? (var.web.auth ? local.traefik_auth_labels : null) : null,
|
|
|
|
)
|
|
|
|
|
|
|
|
networks = concat(var.networks, var.web.expose ? ["traefik"] : [])
|
2018-07-30 06:42:58 +00:00
|
|
|
}
|