acme-to-vault/acme-to-vault.nomad.hcl

96 lines
2.3 KiB
HCL
Raw Permalink Normal View History

2023-10-08 16:12:19 +02:00
[[ $c := merge .acme . -]]
2023-08-21 17:24:33 +02:00
job "[[ .instance ]]" {
2023-10-08 16:12:19 +02:00
type = "[[ if ne "" .acme.cron ]]service[[ else ]]batch[[ end ]]"
[[ template "common/job_start" $c ]]
2023-08-21 17:24:33 +02:00
group "acme-to-vault" {
network {
mode = "bridge"
}
ephemeral_disk {
size = 101
}
2023-08-21 17:24:33 +02:00
service {
2023-12-21 22:10:31 +01:00
name = "[[ .instance ]][[ .consul.suffix ]]"
2023-08-21 17:24:33 +02:00
port = 8787
[[ template "common/connect" $c ]]
2023-08-21 17:24:33 +02:00
tags = [
2024-01-26 23:28:03 +01:00
[[ template "common/traefik_tags" $c ]]
2023-08-21 17:24:33 +02:00
]
}
task "acme-to-vault" {
driver = "[[ $c.nomad.driver ]]"
user = 8787
2023-08-21 17:24:33 +02:00
config {
2024-04-04 13:17:25 +02:00
[[ template "common/image" $c ]]
pids_limit = 50
2023-12-20 21:43:02 +01:00
[[ template "common/tmpfs" dict "target" "/data" "size" "10000000" ]]
2023-08-21 17:24:33 +02:00
}
vault {
2023-12-21 22:10:31 +01:00
policies = ["[[ .instance ]][[ .consul.suffix ]]"]
2023-08-21 17:24:33 +02:00
}
2024-01-17 16:51:47 +01:00
[[ template "common/file_env" $c ]]
template {
data =<<_EOT
[[- if has .acme.vault "service_name" ]]
VAULT_ADDR=http://localhost:8200
[[- else ]]
VAULT_ADDR=[[ .acme.vault.addr ]]
[[- end ]]
[[- if ne .acme.cron "" ]]
MINIT_MAIN_KIND=cron
MINIT_MAIN_CRON=[[ .acme.cron ]]
MINIT_MAIN_IMMEDIATE=true
[[- else ]]
MINIT_MAIN_KIND=once
[[- end ]]
ACME_KV_ACCOUNT_ROOT=[[ .acme.vault.kv_account_root ]]
[[- range $acc_idx, $account := .acme.accounts ]]
ACME_[[ $acc_idx ]]_CA=[[ $account.ca ]]
ACME_[[ $acc_idx ]]_EMAIL=[[ $account.email ]]
ACME_[[ $acc_idx ]]_KV_CERT_ROOT=[[ $account.kv_cert_root ]]
[[- if has $account "challenge" ]]
ACME_[[ $acc_idx ]]_CHALLENGE=[[ $account.challenge ]]
[[- if eq $account.challenge "dns-01" ]]
ACME_[[ $acc_idx ]]_DNS_PROVIDER=[[ $account.dns_provider ]]
ACME_[[ $acc_idx ]]_DNS_KEY_ENV=[[ $account.dns_key_env ]]
ACME_[[ $acc_idx ]]_DNS_KEY_VALUE=[[ $account.dns_key_value ]]
2024-03-05 14:42:27 +01:00
[[- if has $account "dns_resolvers" ]]
ACME_[[ $acc_idx ]]_DNS_RESOLVERS=[[ join $account.dns_resolvers "," ]]
[[- end ]]
[[- else ]]
ACME_[[ $acc_idx ]]_CHALLENGE=http-01
[[- end ]]
[[- end ]]
[[- if has $account "key_type" ]]
ACME_[[ $acc_idx ]]_KEY_TYPE=[[ $account.key_type ]]
[[- end ]]
[[- range $crt_idx, $crt := $account.certs ]]
ACME_[[ $acc_idx ]]_CERT_[[ $crt_idx ]]=[[ $crt ]]
[[- end ]]
[[- end ]]
_EOT
2024-03-05 14:42:27 +01:00
destination = "secrets/acme-to-vault.env"
2024-01-17 16:51:47 +01:00
perms = 0400
env = true
2023-08-21 17:24:33 +02:00
}
2024-01-17 16:51:47 +01:00
[[ template "common/resources" $c ]]
2023-08-21 17:24:33 +02:00
}
}
}
# vim: syntax=hcl