Просмотр исходного кода

feat: Add OVH as ACME DNS Challenge provider in Traefik template

Co-authored-by: ChristianLempa <28359525+ChristianLempa@users.noreply.github.com>
copilot-swe-agent[bot] 6 дней назад
Родитель
Сommit
441d81863c

+ 5 - 0
library/compose/traefik/.env.j2

@@ -17,5 +17,10 @@ AZURE_CLIENT_ID={{ traefik_tls_acme_token }}
 AZURE_CLIENT_SECRET={{ traefik_tls_acme_secret_key }}
 {% elif traefik_tls_certresolver == 'namecheap' %}
 NAMECHEAP_API_KEY={{ traefik_tls_acme_token }}
+{% elif traefik_tls_certresolver == 'ovh' %}
+OVH_ENDPOINT={{ traefik_tls_acme_endpoint }}
+OVH_APPLICATION_KEY={{ traefik_tls_acme_token }}
+OVH_APPLICATION_SECRET={{ traefik_tls_acme_secret_key }}
+OVH_CONSUMER_KEY={{ traefik_tls_acme_consumer_key }}
 {% endif %}
 {% endif %}

+ 1 - 0
library/compose/traefik/.env.secret.consumer_key.j2

@@ -0,0 +1 @@
+{% if traefik_tls_enabled and swarm_enabled and traefik_tls_certresolver == 'ovh' %}{{ traefik_tls_acme_consumer_key }}{% endif %}

+ 18 - 0
library/compose/traefik/compose.yaml.j2

@@ -142,6 +142,17 @@ services:
       - NAMECHEAP_API_KEY=${NAMECHEAP_API_KEY}
       {% endif %}
       - NAMECHEAP_API_USER={{ traefik_tls_acme_username }}
+      {% elif traefik_tls_certresolver == 'ovh' %}
+      - OVH_ENDPOINT={{ traefik_tls_acme_endpoint }}
+      {% if swarm_enabled %}
+      - OVH_APPLICATION_KEY_FILE=/run/secrets/{{ service_name }}_token
+      - OVH_APPLICATION_SECRET_FILE=/run/secrets/{{ service_name }}_token_key
+      - OVH_CONSUMER_KEY_FILE=/run/secrets/{{ service_name }}_consumer_key
+      {% else %}
+      - OVH_APPLICATION_KEY=${OVH_APPLICATION_KEY}
+      - OVH_APPLICATION_SECRET=${OVH_APPLICATION_SECRET}
+      - OVH_CONSUMER_KEY=${OVH_CONSUMER_KEY}
+      {% endif %}
       {% endif %}
       {% endif %}
     healthcheck:
@@ -159,6 +170,9 @@ services:
       {% if traefik_tls_acme_secret_key %}
       - {{ service_name }}_token_key
       {% endif %}
+      {% if traefik_tls_certresolver == 'ovh' %}
+      - {{ service_name }}_consumer_key
+      {% endif %}
     {% endif %}
     deploy:
       mode: {{ swarm_placement_mode }}
@@ -185,6 +199,10 @@ secrets:
   {{ service_name }}_token_key:
     file: ./.env.secret.token_key
   {% endif %}
+  {% if traefik_tls_certresolver == 'ovh' %}
+  {{ service_name }}_consumer_key:
+    file: ./.env.secret.consumer_key
+  {% endif %}
 {% endif %}
 
 {#

+ 22 - 4
library/compose/traefik/template.yaml

@@ -117,6 +117,7 @@ spec:
           - route53
           - azure
           - namecheap
+          - ovh
         default: cloudflare
         required: true
         needs:
@@ -128,6 +129,15 @@ spec:
         required: true
         needs:
           - traefik_tls_enabled=true
+      traefik_tls_acme_endpoint:
+        description: OVH API endpoint
+        type: str
+        default: ovh-eu
+        required: true
+        needs:
+          - traefik_tls_enabled=true
+          - traefik_tls_certresolver=ovh
+        extra: Common values are ovh-eu, ovh-ca, ovh-us
       traefik_tls_acme_region:
         description: AWS Region
         type: str
@@ -150,8 +160,8 @@ spec:
         required: true
         needs:
           - traefik_tls_enabled=true
-          - traefik_tls_certresolver=azure,godaddy,porkbun,route53
-        extra: AZURE_CLIENT_SECRET, GODADDY_API_SECRET, PORKBUN_SECRET_API_KEY, or AWS_SECRET_ACCESS_KEY
+          - traefik_tls_certresolver=azure,godaddy,ovh,porkbun,route53
+        extra: AZURE_CLIENT_SECRET, GODADDY_API_SECRET, OVH_APPLICATION_SECRET, PORKBUN_SECRET_API_KEY, or AWS_SECRET_ACCESS_KEY
       traefik_tls_acme_subscription_id:
         description: Azure Subscription ID
         type: str
@@ -173,8 +183,8 @@ spec:
         required: true
         needs:
           - traefik_tls_enabled=true
-          - traefik_tls_certresolver=cloudflare,digitalocean,godaddy,namecheap,porkbun
-        extra: CF_DNS_API_TOKEN, DO_AUTH_TOKEN, GODADDY_API_KEY, NAMECHEAP_API_KEY, or PORKBUN_API_KEY
+          - traefik_tls_certresolver=cloudflare,digitalocean,godaddy,namecheap,ovh,porkbun
+        extra: CF_DNS_API_TOKEN, DO_AUTH_TOKEN, GODADDY_API_KEY, NAMECHEAP_API_KEY, OVH_APPLICATION_KEY, or PORKBUN_API_KEY
       traefik_tls_acme_username:
         description: Namecheap API username
         type: str
@@ -182,6 +192,14 @@ spec:
         needs:
           - traefik_tls_enabled=true
           - traefik_tls_certresolver=namecheap
+      traefik_tls_acme_consumer_key:
+        description: OVH Consumer Key
+        type: str
+        sensitive: true
+        required: true
+        needs:
+          - traefik_tls_enabled=true
+          - traefik_tls_certresolver=ovh
       traefik_tls_redirect:
         description: Redirect all HTTP traffic to HTTPS
         type: bool