mirror of
https://github.com/KevinMidboe/playbooks-retailor.git
synced 2026-09-07 13:32:06 +00:00
Compare commits
4 Commits
88b557a1b6
...
1749646cb3
| Author | SHA1 | Date | |
|---|---|---|---|
| 1749646cb3 | |||
| 18884d260a | |||
| 74572d2a9e | |||
| f7faa2e5b1 |
@@ -4,5 +4,4 @@
|
|||||||
roles:
|
roles:
|
||||||
- role: roles/firewall
|
- role: roles/firewall
|
||||||
- role: roles/docker
|
- role: roles/docker
|
||||||
- role: roles/env
|
|
||||||
- role: roles/traefik
|
- role: roles/traefik
|
||||||
|
|||||||
@@ -4,12 +4,15 @@ traefik_web_port: 80
|
|||||||
traefik_websecure_port: 443
|
traefik_websecure_port: 443
|
||||||
traefik_dashboard_port: 8080
|
traefik_dashboard_port: 8080
|
||||||
traefik_metrics_port: 8100
|
traefik_metrics_port: 8100
|
||||||
|
|
||||||
|
traefik_image: "traefik:v3.1"
|
||||||
traefik_dashboard_insecure: true # ufw should only allow from tailscale or vnet
|
traefik_dashboard_insecure: true # ufw should only allow from tailscale or vnet
|
||||||
traefik_acme_staging: "{{ lookup('env', 'TRAEFIK_ACME_STAGING') | default('false', true) }}"
|
traefik_acme_staging: "{{ lookup('env', 'TRAEFIK_ACME_STAGING') | default('false', true) }}"
|
||||||
|
|
||||||
domain: "{{ lookup('env', 'DOMAIN') | default('', true) }}"
|
traefik_acme_email: "{{ lookup('env', 'TRAEFIK_ACME_EMAIL') | default('', true) }}"
|
||||||
|
traefik_domain: "{{ lookup('env', 'DOMAIN') | default('', true) }}"
|
||||||
# Single source of truth for static routing. Expected to be overridden
|
# Single source of truth for static routing. Expected to be overridden
|
||||||
# from group_vars, -e, or an env-var lookup at the play level — see
|
# from group_vars, -e, or an env-var lookup at the play level — see
|
||||||
# playbook.yml for the TRAEFIK_ROUTES example.
|
# playbook.yml for the TRAEFIK_ROUTES example.
|
||||||
traefik_web_private_ips: "{{ lookup('env', 'WEB_IPS') | default('[]', true) | from_json }}"
|
traefik_web_private_ips: "{{ lookup('env', 'WEB_IPS') | from_json }}"
|
||||||
traefik_analytics_private_ip: "{{ lookup('env', 'ANALYTICS_IP') | default('', true) }}"
|
traefik_analytics_private_ip: "{{ lookup('env', 'ANALYTICS_IP') | default('', true) }}"
|
||||||
|
|||||||
@@ -5,7 +5,7 @@
|
|||||||
traefik_web_private_ips is empty. Set the WEB_IPS env var
|
traefik_web_private_ips is empty. Set the WEB_IPS env var
|
||||||
(JSON list) before running, or override the variable directly, e.g.
|
(JSON list) before running, or override the variable directly, e.g.
|
||||||
-e traefik_web_private_ips='["10.0.1.11","10.0.1.12"]'
|
-e traefik_web_private_ips='["10.0.1.11","10.0.1.12"]'
|
||||||
when: env_vars.WEB_IPS | length == 0
|
when: traefik_web_private_ips | length == 0
|
||||||
|
|
||||||
- name: Ensure Traefik config directories exist
|
- name: Ensure Traefik config directories exist
|
||||||
ansible.builtin.file:
|
ansible.builtin.file:
|
||||||
|
|||||||
@@ -3,22 +3,22 @@
|
|||||||
http:
|
http:
|
||||||
routers:
|
routers:
|
||||||
analytics:
|
analytics:
|
||||||
rule: "Host(`analytics.{{ env_vars.DOMAIN }}`)"
|
rule: "Host(`analytics.{{ traefik_domain }}`)"
|
||||||
entryPoints:
|
entryPoints:
|
||||||
- websecure
|
- websecure
|
||||||
service: analytics-svc
|
service: analytics-svc
|
||||||
tls:
|
tls:
|
||||||
certResolver: letsencrypt
|
certResolver: letsencrypt
|
||||||
domains:
|
domains:
|
||||||
- main: "analytics.{{ env_vars.DOMAIN }}"
|
- main: "analytics.{{ traefik_domain }}"
|
||||||
sans:
|
sans:
|
||||||
- "blog.{{ env_vars.DOMAIN }}"
|
- "blog-1.{{ traefik_domain }}"
|
||||||
|
|
||||||
services:
|
services:
|
||||||
analytics-svc:
|
analytics-svc:
|
||||||
loadBalancer:
|
loadBalancer:
|
||||||
servers:
|
servers:
|
||||||
- url: "http://{{ env_vars.ANALYTICS_IP }}:3000"
|
- url: "http://{{ traefik_analytics_private_ip }}:3000"
|
||||||
healthCheck:
|
healthCheck:
|
||||||
path: /api/heartbeat
|
path: /api/heartbeat
|
||||||
interval: "10s"
|
interval: "10s"
|
||||||
|
|||||||
@@ -3,22 +3,22 @@
|
|||||||
http:
|
http:
|
||||||
routers:
|
routers:
|
||||||
retailor-web:
|
retailor-web:
|
||||||
rule: "Host(`app.{{ env_vars.DOMAIN }}`)"
|
rule: "Host(`app.{{ traefik_domain }}`)"
|
||||||
service: retailor-web-svc
|
service: retailor-web-svc
|
||||||
entryPoints:
|
entryPoints:
|
||||||
- websecure
|
- websecure
|
||||||
tls:
|
tls:
|
||||||
certResolver: letsencrypt
|
certResolver: letsencrypt
|
||||||
domains:
|
domains:
|
||||||
- main: "app.{{ env_vars.DOMAIN }}"
|
- main: "app.{{ traefik_domain }}"
|
||||||
sans:
|
sans:
|
||||||
- "blog.{{ env_vars.DOMAIN }}"
|
- "blog-1.{{ traefik_domain }}"
|
||||||
|
|
||||||
services:
|
services:
|
||||||
retailor-web-svc:
|
retailor-web-svc:
|
||||||
loadBalancer:
|
loadBalancer:
|
||||||
servers:
|
servers:
|
||||||
{% for web_ip in env_vars.WEB_IPS | from_json %}
|
{% for web_ip in traefik_web_private_ips %}
|
||||||
- url: "http://{{ web_ip }}:80"
|
- url: "http://{{ web_ip }}:80"
|
||||||
{% endfor %}
|
{% endfor %}
|
||||||
healthCheck:
|
healthCheck:
|
||||||
|
|||||||
Reference in New Issue
Block a user