diff --git a/consul/config/service-defaults/vaultwarden.hcl b/consul/config/service-defaults/vaultwarden.hcl index 1cefa64..f3ad32f 100644 --- a/consul/config/service-defaults/vaultwarden.hcl +++ b/consul/config/service-defaults/vaultwarden.hcl @@ -1,3 +1,3 @@ Kind = "service-defaults" -Name = "[[ .vaultwarden.instance ]][[ .consul.suffix ]]" +Name = "[[ .instance ]][[ .consul.suffix ]]" Protocol = "http" diff --git a/init/vault-vaultwarden b/init/vault-vaultwarden index b0f9f3e..c3cb7c3 100755 --- a/init/vault-vaultwarden +++ b/init/vault-vaultwarden @@ -4,5 +4,5 @@ set -euo pipefail [[- template "common/vault.mkpgrole.sh.tpl" dict "ctx" . - "config" (dict "role" .vaultwarden.instance "database" "postgres") + "config" (dict "role" .instance "database" "postgres") ]] diff --git a/prep.d/10-mv_conf.sh b/prep.d/10-mv_conf.sh index a3e5867..eb8431b 100755 --- a/prep.d/10-mv_conf.sh +++ b/prep.d/10-mv_conf.sh @@ -1 +1 @@ -[[ template "common/mv_conf.sh.tpl" dict "ctx" . "services" (dict "vaultwarden" .vaultwarden.instance) ]] +[[ template "common/mv_conf.sh" dict "ctx" . "services" (dict "vaultwarden" .instance) ]] diff --git a/variables.yml b/variables.yml index aa664f7..b032c45 100644 --- a/variables.yml +++ b/variables.yml @@ -1,8 +1,9 @@ --- +# Name of this instance (job and service name) +instance: vaultwarden + vaultwarden: - # Name of this instance (job and service name) - instance: vaultwarden # Server settings server: diff --git a/vault/policies/vaultwarden.hcl b/vault/policies/vaultwarden.hcl index be39a82..4ec71e1 100644 --- a/vault/policies/vaultwarden.hcl +++ b/vault/policies/vaultwarden.hcl @@ -1,7 +1,7 @@ -path "[[ .vault.prefix ]]kv/data/service/[[ .vaultwarden.instance ]]" { +path "[[ .vault.prefix ]]kv/data/service/[[ .instance ]]" { capabilities = ["read"] } -path "[[ .vault.prefix ]]database/creds/[[ .vaultwarden.instance ]]" { +path "[[ .vault.prefix ]]database/creds/[[ .instance ]]" { capabilities = ["read"] } diff --git a/vaultwarden.nomad.hcl b/vaultwarden.nomad.hcl index 9ed272c..98640db 100644 --- a/vaultwarden.nomad.hcl +++ b/vaultwarden.nomad.hcl @@ -1,7 +1,7 @@ [[ $c := merge .vaultwarden.server . -]] -job "[[ .vaultwarden.instance ]]" { +job "[[ .instance ]]" { -[[ template "common/job_start.tpl" $c ]] +[[ template "common/job_start" $c ]] group "vaultwarden" { count = [[ $c.count ]] @@ -20,10 +20,10 @@ job "[[ .vaultwarden.instance ]]" { } service { - name = "[[ .vaultwarden.instance ]][[ $c.consul.suffix ]]" + name = "[[ .instance ]][[ .consul.suffix ]]" port = 8234 -[[ template "common/connect.tpl" $c ]] +[[ template "common/connect" $c ]] check { type = "http" @@ -45,27 +45,27 @@ job "[[ .vaultwarden.instance ]]" { "[[ $a.traefik.instance ]].enable=true", [[- end ]] # Admin interface - "[[ $a.traefik.instance ]].http.routers.[[ .vaultwarden.instance ]][[ $a.consul.suffix ]]-admin.rule=Host(`[[ (urlParse $c.public_url).Hostname ]]`) && PathPrefix(`[[ (urlParse $c.public_url).Path | regexp.Replace "/$" "" ]]/admin`)", - "[[ $a.traefik.instance ]].http.routers.[[ .vaultwarden.instance ]][[ $a.consul.suffix ]]-admin.entrypoints=[[ join $a.traefik.entrypoints "," ]]", - "[[ $a.traefik.instance ]].http.routers.[[ .vaultwarden.instance ]][[ $a.consul.suffix ]]-admin.priority=200", - "[[ $a.traefik.instance ]].http.routers.[[ .vaultwarden.instance ]][[ $a.consul.suffix ]].middlewares=[[ template "common/traefik_middlewares.tpl" $a.traefik ]]", + "[[ $a.traefik.instance ]].http.routers.[[ .instance ]][[ .consul.suffix ]]-admin.rule=Host(`[[ (urlParse $c.public_url).Hostname ]]`) && PathPrefix(`[[ (urlParse $c.public_url).Path | regexp.Replace "/$" "" ]]/admin`)", + "[[ $a.traefik.instance ]].http.routers.[[ .instance ]][[ .consul.suffix ]]-admin.entrypoints=[[ join $a.traefik.entrypoints "," ]]", + "[[ $a.traefik.instance ]].http.routers.[[ .instance ]][[ .consul.suffix ]]-admin.priority=200", + "[[ $a.traefik.instance ]].http.routers.[[ .instance ]][[ .consul.suffix ]].middlewares=[[ template "common/traefik_middlewares" $a.traefik ]]", # Main interface - "[[ $c.traefik.instance ]].http.routers.[[ .vaultwarden.instance ]][[ $c.consul.suffix ]].rule=Host(`[[ (urlParse $c.public_url).Hostname ]]`) + "[[ $c.traefik.instance ]].http.routers.[[ .instance ]][[ .consul.suffix ]].rule=Host(`[[ (urlParse $c.public_url).Hostname ]]`) [[- if not ((urlParse $c.public_url).Path | regexp.Match "^/?$") ]] && PathPrefix(`[[ (urlParse $c.public_url).Path ]]`)[[ end ]]", - "[[ $c.traefik.instance ]].http.routers.[[ .vaultwarden.instance ]][[ $c.consul.suffix ]].entrypoints=[[ join $c.traefik.entrypoints "," ]]", - "[[ $c.traefik.instance ]].http.routers.[[ .vaultwarden.instance ]][[ $c.consul.suffix ]].priority=100", - "[[ $c.traefik.instance ]].http.middlewares.[[ .vaultwarden.instance ]]-csp[[ $c.consul.suffix ]].headers.contentSecurityPolicy=default-src 'self'; img-src 'self' data: https://www.gravatar.com; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; font-src 'self' data:; connect-src 'self' https://api.pwnedpasswords.com https://api.2fa.directory", + "[[ $c.traefik.instance ]].http.routers.[[ .instance ]][[ .consul.suffix ]].entrypoints=[[ join $c.traefik.entrypoints "," ]]", + "[[ $c.traefik.instance ]].http.routers.[[ .instance ]][[ .consul.suffix ]].priority=100", + "[[ $c.traefik.instance ]].http.middlewares.[[ .instance ]]-csp[[ .consul.suffix ]].headers.contentSecurityPolicy=default-src 'self'; img-src 'self' data: https://www.gravatar.com; script-src 'self' 'unsafe-inline' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; font-src 'self' data:; connect-src 'self' https://api.pwnedpasswords.com https://api.2fa.directory", [[- if not ((urlParse $c.public_url).Path | regexp.Match "^/?$") ]] - "[[ $c.traefik.instance ]].http.middlewares.[[ .vaultwarden.instance ]][[ $c.consul.suffix ]]-prefix.stripprefix.prefixes=[[ (urlParse $c.public_url).Path ]]", - "[[ $c.traefik.instance ]].http.routers.[[ .vaultwarden.instance ]][[ $c.consul.suffix ]].middlewares=[[ .vaultwarden.instance ]]-csp[[ $c.consul.suffix ]],[[ template "common/traefik_middlewares.tpl" $c.traefik ]],[[ .vaultwarden.instance ]][[ $c.consul.suffix ]]-prefix", + "[[ $c.traefik.instance ]].http.middlewares.[[ .instance ]][[ .consul.suffix ]]-prefix.stripprefix.prefixes=[[ (urlParse $c.public_url).Path ]]", + "[[ $c.traefik.instance ]].http.routers.[[ .instance ]][[ .consul.suffix ]].middlewares=[[ .instance ]]-csp[[ .consul.suffix ]],[[ template "common/traefik_middlewares" $c.traefik ]],[[ .instance ]][[ .consul.suffix ]]-prefix", [[- else ]] - "[[ $c.traefik.instance ]].http.routers.[[ .vaultwarden.instance ]][[ $c.consul.suffix ]].middlewares=[[ .vaultwarden.instance ]]-csp[[ $c.consul.suffix ]],[[ template "common/traefik_middlewares.tpl" $c.traefik ]]", + "[[ $c.traefik.instance ]].http.routers.[[ .instance ]][[ .consul.suffix ]].middlewares=[[ .instance ]]-csp[[ .consul.suffix ]],[[ template "common/traefik_middlewares" $c.traefik ]]", [[- end ]] ] } -[[ template "common/task.wait_for.tpl" $c ]] +[[ template "common/task.wait_for" $c ]] task "vaultwarden" { driver = [[ $c.nomad.driver | toJSON ]] @@ -78,7 +78,7 @@ job "[[ .vaultwarden.instance ]]" { } vault { - policies = ["[[ .vaultwarden.instance ]][[ $c.consul.suffix ]]"] + policies = ["[[ .instance ]][[ .consul.suffix ]]"] env = false disable_file = true } @@ -89,17 +89,17 @@ job "[[ .vaultwarden.instance ]]" { IP_HEADER = "X-Forwarded-for" DOMAIN = [[ $c.public_url | toJSON ]] DB_CONNECTION_RETRIES = 0 -[[ template "common/proxy_env.tpl" $c ]] +[[ template "common/proxy_env" $c ]] } -[[ template "common/file_env.tpl" $c.env ]] +[[ template "common/file_env" $c.env ]] volume_mount { volume = "data" destination = "/data" } -[[ template "common/resources.tpl" $c.resources ]] +[[ template "common/resources" $c.resources ]] } } }