feat(edge_vps): add Traefik setup task and template
This commit is contained in:
15
roles/edge_vps/tasks/30_traefik.yaml
Normal file
15
roles/edge_vps/tasks/30_traefik.yaml
Normal file
@@ -0,0 +1,15 @@
|
|||||||
|
---
|
||||||
|
- name: Deploy Traefik config
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: traefik/traefik_config.yml.j2
|
||||||
|
dest: "{{ edge_vps_traefik_config_dir }}/traefik_config.yml"
|
||||||
|
mode: "0644"
|
||||||
|
notify: restart traefik
|
||||||
|
|
||||||
|
- name: Deploy Cloudflare credentials for ACME
|
||||||
|
ansible.builtin.copy:
|
||||||
|
content: |
|
||||||
|
CF_DNS_API_TOKEN={{ vault_edge_vps.traefik.cloudflare_api_token }}
|
||||||
|
dest: "{{ edge_vps_traefik_config_dir }}/cloudflare.env"
|
||||||
|
mode: "0600"
|
||||||
|
no_log: true
|
||||||
57
roles/edge_vps/templates/traefik/traefik_config.yml.j2
Normal file
57
roles/edge_vps/templates/traefik/traefik_config.yml.j2
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
api:
|
||||||
|
insecure: true
|
||||||
|
dashboard: true
|
||||||
|
|
||||||
|
providers:
|
||||||
|
http:
|
||||||
|
endpoint: "http://pangolin:3001/api/v1/traefik-config"
|
||||||
|
pollInterval: "5s"
|
||||||
|
file:
|
||||||
|
filename: "/etc/traefik/dynamic_config.yml"
|
||||||
|
|
||||||
|
experimental:
|
||||||
|
plugins:
|
||||||
|
badger:
|
||||||
|
moduleName: "github.com/fosrl/badger"
|
||||||
|
version: "v1.2.1"
|
||||||
|
|
||||||
|
log:
|
||||||
|
level: "INFO"
|
||||||
|
format: "common"
|
||||||
|
maxSize: 100
|
||||||
|
maxBackups: 3
|
||||||
|
maxAge: 3
|
||||||
|
compress: true
|
||||||
|
|
||||||
|
certificatesResolvers:
|
||||||
|
letsencrypt:
|
||||||
|
acme:
|
||||||
|
dnsChallenge:
|
||||||
|
provider: "cloudflare"
|
||||||
|
email: "{{ edge_vps_acme_email }}"
|
||||||
|
storage: "/letsencrypt/acme.json"
|
||||||
|
caServer: "https://acme-v02.api.letsencrypt.org/directory"
|
||||||
|
|
||||||
|
entryPoints:
|
||||||
|
web:
|
||||||
|
address: ":80"
|
||||||
|
websecure:
|
||||||
|
address: ":443"
|
||||||
|
transport:
|
||||||
|
respondingTimeouts:
|
||||||
|
readTimeout: "30m"
|
||||||
|
http:
|
||||||
|
tls:
|
||||||
|
certResolver: "letsencrypt"
|
||||||
|
tcp-6443:
|
||||||
|
address: ":6443/tcp"
|
||||||
|
|
||||||
|
serversTransport:
|
||||||
|
insecureSkipVerify: true
|
||||||
|
|
||||||
|
ping:
|
||||||
|
entryPoint: "web"
|
||||||
|
|
||||||
|
accessLog:
|
||||||
|
filePath: "/var/log/traefik/access.log"
|
||||||
|
format: common
|
||||||
Reference in New Issue
Block a user