_configuration.tpl 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. {{- define "ddns.configuration" -}}
  2. {{- include "ddns.validation" $ }}
  3. configmap:
  4. ddns-config:
  5. enabled: true
  6. data:
  7. PERIOD: {{ .Values.ddnsConfig.period | quote }}
  8. HTTP_TIMEOUT: {{ .Values.ddnsConfig.httpTimeout | quote }}
  9. BACKUP_PERIOD: {{ .Values.ddnsConfig.backupPeriod | quote }}
  10. UPDATE_COOLDOWN_PERIOD: {{ .Values.ddnsConfig.updateCooldownPeriod | quote }}
  11. SHOUTRRR_ADDRESSES: {{ join "," .Values.ddnsConfig.shoutrrrAddresses | quote }}
  12. PUBLICIP_DNS_TIMEOUT: {{ .Values.ddnsConfig.publicIpDnsTimeout | quote }}
  13. PUBLICIP_DNS_PROVIDERS: {{ include "ddns.getPublicIpProviders" (dict "providerList" .Values.ddnsConfig.publicIpDnsProviders) }}
  14. PUBLICIP_HTTP_PROVIDERS: {{ include "ddns.getPublicIpProviders" (dict "providerList" .Values.ddnsConfig.publicIpHttpProviders) }}
  15. PUBLICIPV4_HTTP_PROVIDERS: {{ include "ddns.getPublicIpProviders" (dict "providerList" .Values.ddnsConfig.publicIpv4HttpProviders) }}
  16. PUBLICIPV6_HTTP_PROVIDERS: {{ include "ddns.getPublicIpProviders" (dict "providerList" .Values.ddnsConfig.publicIpv6HttpProviders) }}
  17. PUBLICIP_FETCHERS: {{ include "ddns.getPublicIpProviders" (dict "providerList" .Values.ddnsConfig.publicIpFetchers) }}
  18. {{ $config := include "ddns.generateConfig" $ | fromYaml }}
  19. CONFIG: {{ $config | toJson | quote }}
  20. {{- end -}}
  21. {{- define "ddns.getPublicIpProviders" -}}
  22. {{- $providerList := .providerList -}}
  23. {{- $return := list -}}
  24. {{- range $providerList -}}
  25. {{- if eq .provider "custom" -}}
  26. {{- $return = append $return .custom -}}
  27. {{- else -}}
  28. {{- $return = append $return .provider -}}
  29. {{- end -}}
  30. {{- end -}}
  31. {{- join "," $return -}}
  32. {{- end -}}
  33. {{/* Generates configuration in yaml
  34. and then it gets converted to single line
  35. JSON and passed as an env variable
  36. */}}
  37. {{- define "ddns.generateConfig" -}}
  38. {{- if not .Values.ddnsConfig.config -}}
  39. {{- fail "DDNS Updater - Expected at least 1 item in DNS Provider COnfiguration" -}}
  40. {{- end -}}
  41. {{- $providers := (list "aliyun" "allinkl" "cloudflare" "dd24" "ddnss" "digitalocean"
  42. "dnsomatic" "dnspod" "dondominio" "dreamhost" "duckdns" "dyn"
  43. "dynu" "dynv6" "freedns" "gandi" "gcp" "godaddy" "google" "he"
  44. "infomaniak" "inwx" "linode" "luadns" "namecheap" "njalla" "noip"
  45. "opendns" "ovh" "porkbun" "selfhost.de" "servercow" "spdyn"
  46. "strato" "variomedia" "ionos" "desec" "easydns" "goip" "hetzner"
  47. "name.com" "netcup" "nowdns" "zoneedit") }}
  48. settings:
  49. {{- range $item := .Values.ddnsConfig.config -}}
  50. {{- if not (mustHas $item.provider $providers) -}}
  51. {{- fail (printf "DDNS Updater - DNS Provider [%v] is not supported" $item.provider) -}}
  52. {{- end }}
  53. - provider: {{ $item.provider }}
  54. host: {{ $item.host | required (printf "DDNS Updater - Expected non-empty [Host] for %v provider" $item.provider) | quote }}
  55. domain: {{ $item.domain | required (printf "DDNS Updater - Expected non-empty [Domain] for %v provider" $item.provider) | quote }}
  56. ip_version: {{ $item.ipVersion | default "" | quote }}
  57. {{- include (printf "ddns.config.%v" $item.provider) (dict "item" $item) | trim | nindent 4 -}}
  58. {{- end -}}
  59. {{- end -}}
  60. {{/* TODO: OVH */}}