diff options
Diffstat (limited to 'cluster/prod/app/email/deploy')
-rw-r--r-- | cluster/prod/app/email/deploy/email.hcl | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/cluster/prod/app/email/deploy/email.hcl b/cluster/prod/app/email/deploy/email.hcl index 10e4d50..287cff3 100644 --- a/cluster/prod/app/email/deploy/email.hcl +++ b/cluster/prod/app/email/deploy/email.hcl @@ -382,6 +382,29 @@ job "email" { destination = "secrets/postfix/transport" } + template { + # Collect machine IPs from the cluster. + # We use intermediate maps to ensure we get a sorted list with no duplicates, + # so that it is robust wrt. changes in the order of the output of ls or + # addition of new machines in an existing site. + # (scratch.MapValues returns the list of *values* in the map, sorted by *key*) + data = <<EOH + {{- range ls "diplonat/autodiscovery/ipv4" }} + {{- with $a := .Value | parseJSON }} + {{- scratch.MapSet "ipv4" $a.address $a.address }} + {{- end }} + {{- end -}} + {{- range ls "diplonat/autodiscovery/ipv6" }} + {{- with $a := .Value | parseJSON }} + {{- scratch.MapSet "ipv6" $a.address $a.address }} + {{- end }} + {{- end -}} + {{- range scratch.MapValues "ipv4" }}{{ . }} {{ end }} + {{- range scratch.MapValues "ipv6" }}[{{ . }}] {{ end }} + EOH + destination = "secrets/postfix/rate-limit-exceptions" + } + # --- secrets --- template { data = "{{ with $d := key \"tricot/certs/smtp.deuxfleurs.fr\" | parseJSON }}{{ $d.cert_pem }}{{ end }}" |