Add traefik config
This commit is contained in:
parent
a42c1a4182
commit
035ff0ac24
5 changed files with 154 additions and 0 deletions
12
ansible/roles/docker/files/traefik/docker-compose.yml
Normal file
12
ansible/roles/docker/files/traefik/docker-compose.yml
Normal file
|
@ -0,0 +1,12 @@
|
||||||
|
version: "3"
|
||||||
|
|
||||||
|
services:
|
||||||
|
traefik:
|
||||||
|
container_name: traefik
|
||||||
|
image: traefik:v2.1.2
|
||||||
|
#command: "--log.level=DEBUG"
|
||||||
|
network_mode: host
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
|
- ./traefik:/etc/traefik
|
||||||
|
restart: unless-stopped
|
42
ansible/roles/docker/files/traefik/file-provider.yml
Normal file
42
ansible/roles/docker/files/traefik/file-provider.yml
Normal file
|
@ -0,0 +1,42 @@
|
||||||
|
http:
|
||||||
|
middlewares:
|
||||||
|
internal-only:
|
||||||
|
ipWhiteList:
|
||||||
|
sourceRange:
|
||||||
|
- "{{ wireguard.cidr }}"
|
||||||
|
- "192.168.1.0/24"
|
||||||
|
hsts:
|
||||||
|
redirectScheme:
|
||||||
|
scheme: https
|
||||||
|
|
||||||
|
routers:
|
||||||
|
hsts:
|
||||||
|
service: "ping@internal"
|
||||||
|
rule: "PathPrefix(`/`)"
|
||||||
|
entryPoints:
|
||||||
|
- web
|
||||||
|
middlewares:
|
||||||
|
- hsts
|
||||||
|
ping:
|
||||||
|
service: "ping@internal"
|
||||||
|
rule: "Host(`traefik.jakehoward.tech`) && Path(`/ping/`)"
|
||||||
|
middlewares:
|
||||||
|
- hsts
|
||||||
|
tls:
|
||||||
|
certResolver: le
|
||||||
|
dashboard:
|
||||||
|
service: "dashboard@internal"
|
||||||
|
rule: "Host(`traefik.jakehoward.tech`)"
|
||||||
|
middlewares:
|
||||||
|
- hsts
|
||||||
|
- internal-only
|
||||||
|
tls:
|
||||||
|
certResolver: le
|
||||||
|
api:
|
||||||
|
service: "api@internal"
|
||||||
|
rule: "Host(`traefik.jakehoward.tech`) && PathPrefix(`/api`)"
|
||||||
|
middlewares:
|
||||||
|
- hsts
|
||||||
|
- internal-only
|
||||||
|
tls:
|
||||||
|
certResolver: le
|
38
ansible/roles/docker/files/traefik/traefik.yml
Normal file
38
ansible/roles/docker/files/traefik/traefik.yml
Normal file
|
@ -0,0 +1,38 @@
|
||||||
|
entryPoints:
|
||||||
|
web:
|
||||||
|
address: ":80"
|
||||||
|
proxyProtocol:
|
||||||
|
trustedIPs:
|
||||||
|
- "{{ wireguard.cidr }}"
|
||||||
|
web-secure:
|
||||||
|
address: ":443"
|
||||||
|
proxyProtocol:
|
||||||
|
trustedIPs:
|
||||||
|
- "{{ wireguard.cidr }}"
|
||||||
|
matrix:
|
||||||
|
address: ":8448"
|
||||||
|
proxyProtocol:
|
||||||
|
trustedIPs:
|
||||||
|
- "{{ wireguard.cidr }}"
|
||||||
|
|
||||||
|
ping:
|
||||||
|
manualRouting: true
|
||||||
|
|
||||||
|
providers:
|
||||||
|
docker:
|
||||||
|
endpoint: "unix:///var/run/docker.sock"
|
||||||
|
watch: true
|
||||||
|
exposedByDefault: false
|
||||||
|
file:
|
||||||
|
filename: /etc/traefik/file-provider.yml
|
||||||
|
|
||||||
|
api:
|
||||||
|
dashboard: true
|
||||||
|
|
||||||
|
certificatesResolvers:
|
||||||
|
le:
|
||||||
|
acme:
|
||||||
|
email: "hosting@theorangeone.net"
|
||||||
|
storage: "/etc/traefik/acme.json"
|
||||||
|
httpChallenge:
|
||||||
|
entryPoint: web
|
|
@ -27,3 +27,6 @@
|
||||||
|
|
||||||
- name: Install gotify
|
- name: Install gotify
|
||||||
include: gotify.yml
|
include: gotify.yml
|
||||||
|
|
||||||
|
- name: Install traefik
|
||||||
|
include: traefik.yml
|
||||||
|
|
59
ansible/roles/docker/tasks/traefik.yml
Normal file
59
ansible/roles/docker/tasks/traefik.yml
Normal file
|
@ -0,0 +1,59 @@
|
||||||
|
- name: Create traefik directory
|
||||||
|
file:
|
||||||
|
path: '/opt/traefik'
|
||||||
|
state: directory
|
||||||
|
owner: "{{ docker_user.name }}"
|
||||||
|
mode: "{{ docker_compose_directory_mask }}"
|
||||||
|
become: true
|
||||||
|
become_user: root
|
||||||
|
|
||||||
|
- name: Create traefik config directory
|
||||||
|
file:
|
||||||
|
path: '/opt/traefik/traefik'
|
||||||
|
state: directory
|
||||||
|
mode: "{{ docker_compose_directory_mask }}"
|
||||||
|
become: true
|
||||||
|
become_user: root
|
||||||
|
|
||||||
|
- name: Install traefik compose file
|
||||||
|
template:
|
||||||
|
src: files/traefik/docker-compose.yml
|
||||||
|
dest: "/opt/traefik/docker-compose.yml"
|
||||||
|
mode: "{{ docker_compose_file_mask }}"
|
||||||
|
owner: "{{ docker_user.name }}"
|
||||||
|
validate: /usr/bin/docker-compose -f %s config
|
||||||
|
register: compose_file
|
||||||
|
become: true
|
||||||
|
become_user: root
|
||||||
|
|
||||||
|
- name: Install traefik config
|
||||||
|
template:
|
||||||
|
src: files/traefik/traefik.yml
|
||||||
|
dest: "/opt/traefik/traefik/traefik.yml"
|
||||||
|
mode: "{{ docker_compose_file_mask }}"
|
||||||
|
owner: "{{ docker_user.name }}"
|
||||||
|
register: config_file
|
||||||
|
become: true
|
||||||
|
become_user: root
|
||||||
|
|
||||||
|
- name: Install traefik file provider
|
||||||
|
template:
|
||||||
|
src: files/traefik/file-provider.yml
|
||||||
|
dest: "/opt/traefik/traefik/file-provider.yml"
|
||||||
|
mode: "{{ docker_compose_file_mask }}"
|
||||||
|
owner: "{{ docker_user.name }}"
|
||||||
|
register: file_provider
|
||||||
|
become: true
|
||||||
|
become_user: root
|
||||||
|
|
||||||
|
- name: Cycle traefik container
|
||||||
|
docker_compose:
|
||||||
|
project_src: /opt/traefik
|
||||||
|
pull: true
|
||||||
|
remove_orphans: true
|
||||||
|
remove_volumes: true
|
||||||
|
state: "{{ item }}"
|
||||||
|
when: compose_file.changed or config_file.changed or file_provider.changed
|
||||||
|
loop:
|
||||||
|
- absent
|
||||||
|
- present
|
Loading…
Reference in a new issue