Final changes to traefik and up and running
This commit is contained in:
@@ -1,4 +1,5 @@
|
|||||||
[defaults]
|
[defaults]
|
||||||
|
remote_user = mike
|
||||||
inventory = ./hosts.ini
|
inventory = ./hosts.ini
|
||||||
interpreter_python = auto_silent
|
interpreter_python = auto_silent
|
||||||
vault_password_file = ./vault-pass.sh
|
vault_password_file = ./vault-pass.sh
|
||||||
|
@@ -10,6 +10,7 @@
|
|||||||
template:
|
template:
|
||||||
src: docker-compose.yml
|
src: docker-compose.yml
|
||||||
dest: "{{ install_directory }}/{{ role_name }}/docker-compose.yml"
|
dest: "{{ install_directory }}/{{ role_name }}/docker-compose.yml"
|
||||||
|
owner: "{{ docker_user }}"
|
||||||
mode: "{{ docker_compose_file_mask }}"
|
mode: "{{ docker_compose_file_mask }}"
|
||||||
validate: docker-compose -f %s config
|
validate: docker-compose -f %s config
|
||||||
become: true
|
become: true
|
||||||
|
@@ -18,6 +18,7 @@
|
|||||||
template:
|
template:
|
||||||
src: docker-compose.yml
|
src: docker-compose.yml
|
||||||
dest: "{{ install_directory }}/{{ role_name }}/docker-compose.yml"
|
dest: "{{ install_directory }}/{{ role_name }}/docker-compose.yml"
|
||||||
|
owner: "{{ docker_user }}"
|
||||||
mode: "{{ docker_compose_file_mask }}"
|
mode: "{{ docker_compose_file_mask }}"
|
||||||
validate: docker-compose -f %s config
|
validate: docker-compose -f %s config
|
||||||
become: true
|
become: true
|
||||||
|
@@ -10,6 +10,7 @@
|
|||||||
template:
|
template:
|
||||||
src: docker-compose.yml
|
src: docker-compose.yml
|
||||||
dest: "{{ install_directory }}/{{ role_name }}/docker-compose.yml"
|
dest: "{{ install_directory }}/{{ role_name }}/docker-compose.yml"
|
||||||
|
owner: "{{ docker_user }}"
|
||||||
mode: "{{ docker_compose_file_mask }}"
|
mode: "{{ docker_compose_file_mask }}"
|
||||||
validate: docker-compose -f %s config
|
validate: docker-compose -f %s config
|
||||||
become: true
|
become: true
|
||||||
|
@@ -16,6 +16,7 @@
|
|||||||
template:
|
template:
|
||||||
src: docker-compose.yml
|
src: docker-compose.yml
|
||||||
dest: "{{ install_directory }}/{{ role_name }}/docker-compose.yml"
|
dest: "{{ install_directory }}/{{ role_name }}/docker-compose.yml"
|
||||||
|
owner: "{{ docker_user }}"
|
||||||
mode: "{{ docker_compose_file_mask }}"
|
mode: "{{ docker_compose_file_mask }}"
|
||||||
validate: docker-compose -f %s config
|
validate: docker-compose -f %s config
|
||||||
become: true
|
become: true
|
||||||
|
@@ -18,6 +18,7 @@
|
|||||||
template:
|
template:
|
||||||
src: docker-compose.yml
|
src: docker-compose.yml
|
||||||
dest: "{{ install_directory }}/{{ role_name }}/docker-compose.yml"
|
dest: "{{ install_directory }}/{{ role_name }}/docker-compose.yml"
|
||||||
|
owner: "{{ docker_user }}"
|
||||||
mode: "{{ docker_compose_file_mask }}"
|
mode: "{{ docker_compose_file_mask }}"
|
||||||
validate: docker-compose -f %s config
|
validate: docker-compose -f %s config
|
||||||
become: true
|
become: true
|
||||||
|
@@ -18,6 +18,7 @@
|
|||||||
template:
|
template:
|
||||||
src: docker-compose.yml
|
src: docker-compose.yml
|
||||||
dest: "{{ install_directory }}/{{ role_name }}/docker-compose.yml"
|
dest: "{{ install_directory }}/{{ role_name }}/docker-compose.yml"
|
||||||
|
owner: "{{ docker_user }}"
|
||||||
mode: "{{ docker_compose_file_mask }}"
|
mode: "{{ docker_compose_file_mask }}"
|
||||||
validate: docker-compose -f %s config
|
validate: docker-compose -f %s config
|
||||||
become: true
|
become: true
|
||||||
|
@@ -18,6 +18,7 @@
|
|||||||
template:
|
template:
|
||||||
src: docker-compose.yml
|
src: docker-compose.yml
|
||||||
dest: "{{ install_directory }}/{{ role_name }}/docker-compose.yml"
|
dest: "{{ install_directory }}/{{ role_name }}/docker-compose.yml"
|
||||||
|
owner: "{{ docker_user }}"
|
||||||
mode: "{{ docker_compose_file_mask }}"
|
mode: "{{ docker_compose_file_mask }}"
|
||||||
validate: docker-compose -f %s config
|
validate: docker-compose -f %s config
|
||||||
become: true
|
become: true
|
||||||
|
@@ -18,6 +18,7 @@
|
|||||||
template:
|
template:
|
||||||
src: docker-compose.yml
|
src: docker-compose.yml
|
||||||
dest: "{{ install_directory }}/{{ role_name }}/docker-compose.yml"
|
dest: "{{ install_directory }}/{{ role_name }}/docker-compose.yml"
|
||||||
|
owner: "{{ docker_user }}"
|
||||||
mode: "{{ docker_compose_file_mask }}"
|
mode: "{{ docker_compose_file_mask }}"
|
||||||
validate: docker-compose -f %s config
|
validate: docker-compose -f %s config
|
||||||
become: true
|
become: true
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
- name: Restart Traefik
|
- name: restart traefik
|
||||||
community.docker.docker_compose:
|
community.docker.docker_compose:
|
||||||
project_src: "{{ install_directory }}/traefik"
|
project_src: "{{ install_directory }}/traefik"
|
||||||
restarted: true
|
restarted: true
|
||||||
|
@@ -14,16 +14,11 @@
|
|||||||
template:
|
template:
|
||||||
src: docker-compose.yml
|
src: docker-compose.yml
|
||||||
dest: "{{ install_directory}}/traefik/docker-compose.yml"
|
dest: "{{ install_directory}}/traefik/docker-compose.yml"
|
||||||
|
owner: "{{ docker_user }}"
|
||||||
mode: "{{ docker_compose_file_mask }}"
|
mode: "{{ docker_compose_file_mask }}"
|
||||||
validate: docker-compose -f %s config
|
validate: docker-compose -f %s config
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
- name: Start docker container
|
|
||||||
community.docker.docker_compose:
|
|
||||||
project_src: "{{ install_directory }}/traefik"
|
|
||||||
pull: true
|
|
||||||
remove_orphans: yes
|
|
||||||
|
|
||||||
- name: Install config
|
- name: Install config
|
||||||
template:
|
template:
|
||||||
src: traefik.yml
|
src: traefik.yml
|
||||||
@@ -40,3 +35,25 @@
|
|||||||
mode: "{{ docker_compose_directory_mask }}"
|
mode: "{{ docker_compose_directory_mask }}"
|
||||||
owner: "{{ primary_user }}"
|
owner: "{{ primary_user }}"
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
|
- name: Install file providers
|
||||||
|
template:
|
||||||
|
src: "{{ item }}"
|
||||||
|
dest: "{{ data_dir }}/traefik/conf/"
|
||||||
|
mode: "{{ docker_compose_file_mask }}"
|
||||||
|
owner: "{{ primary_user }}"
|
||||||
|
with_fileglob:
|
||||||
|
- "templates/conf/*"
|
||||||
|
|
||||||
|
- name: Create acme storage file
|
||||||
|
file:
|
||||||
|
path: "{{ data_dir }}/traefik/acme.json"
|
||||||
|
state: touch
|
||||||
|
mode: 0600
|
||||||
|
become: true
|
||||||
|
|
||||||
|
- name: Start docker container
|
||||||
|
community.docker.docker_compose:
|
||||||
|
project_src: "{{ install_directory }}/traefik"
|
||||||
|
pull: true
|
||||||
|
remove_orphans: yes
|
||||||
|
17
ansible/roles/traefik/templates/conf/middlewares.yml
Normal file
17
ansible/roles/traefik/templates/conf/middlewares.yml
Normal file
@@ -0,0 +1,17 @@
|
|||||||
|
http:
|
||||||
|
middlewares:
|
||||||
|
lan-whitelist:
|
||||||
|
ipWhitelist:
|
||||||
|
sourceRange:
|
||||||
|
- 10.0.0.0/24
|
||||||
|
- 10.67.115.0/24
|
||||||
|
|
||||||
|
secure-headers:
|
||||||
|
headers:
|
||||||
|
customFrameOptionsValue: SAMEORIGIN
|
||||||
|
forceSTSHeader: true
|
||||||
|
stsSeconds: 15552000
|
||||||
|
stsPreload: true
|
||||||
|
customResponseHeaders:
|
||||||
|
Permissions-Policy: interest-cohort() # Opts out of Google's FLoC network. See https://paramdeo.com/blog/opting-your-website-out-of-googles-floc-network
|
||||||
|
X-Robots-Tag: none
|
@@ -3,11 +3,15 @@ version: "{{ docker_compose_version }}"
|
|||||||
networks:
|
networks:
|
||||||
traefik:
|
traefik:
|
||||||
external: true
|
external: true
|
||||||
|
docker-socket-proxy:
|
||||||
|
external: false
|
||||||
|
|
||||||
services:
|
services:
|
||||||
traefik:
|
traefik:
|
||||||
container_name: traefik
|
container_name: traefik
|
||||||
image: traefik:latest
|
image: traefik:v2.9
|
||||||
|
depends_on:
|
||||||
|
- docker_socket_proxy
|
||||||
networks:
|
networks:
|
||||||
- traefik
|
- traefik
|
||||||
- docker-socket-proxy
|
- docker-socket-proxy
|
||||||
@@ -24,3 +28,15 @@ services:
|
|||||||
traefik.http.routers.traefik-dashboard.rule: "Host(`traefik.local.{{ personal_domain }}`)"
|
traefik.http.routers.traefik-dashboard.rule: "Host(`traefik.local.{{ personal_domain }}`)"
|
||||||
traefik.http.routers.traefik-dashboard.service: api@internal
|
traefik.http.routers.traefik-dashboard.service: api@internal
|
||||||
traefik.http.routers.traefik-dashboard.middlewares: lan-whitelist@file
|
traefik.http.routers.traefik-dashboard.middlewares: lan-whitelist@file
|
||||||
|
|
||||||
|
docker_socket_proxy:
|
||||||
|
image: tecnativa/docker-socket-proxy:latest
|
||||||
|
restart: unless-stopped
|
||||||
|
networks:
|
||||||
|
- docker-socket-proxy
|
||||||
|
environment:
|
||||||
|
- CONTAINERS=1
|
||||||
|
- SERVICES=1
|
||||||
|
- INFO=1
|
||||||
|
volumes:
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||||
|
@@ -23,19 +23,25 @@ entryPoints:
|
|||||||
traefik:
|
traefik:
|
||||||
address: :8080
|
address: :8080
|
||||||
|
|
||||||
|
api:
|
||||||
|
dashboard: true
|
||||||
|
debug: false
|
||||||
|
|
||||||
certificatesResolvers:
|
certificatesResolvers:
|
||||||
letsencrypt:
|
letsencrypt:
|
||||||
acme:
|
acme:
|
||||||
# Staging server
|
# Staging server
|
||||||
caServer: https://acme-staging-v02.api.letsencrypt.org/directory
|
#caServer: https://acme-staging-v02.api.letsencrypt.org/directory
|
||||||
|
|
||||||
# Production server
|
# Production server
|
||||||
# caServer: https://acme-v02.api.letsencrypt.org/directory
|
caServer: https://acme-v02.api.letsencrypt.org/directory
|
||||||
email: "{{ letsencrypt_email }}"
|
email: "{{ letsencrypt_email }}"
|
||||||
storage: /etc/traefik.acme.json
|
storage: /etc/traefik/acme.json
|
||||||
dnsChallenge:
|
dnsChallenge:
|
||||||
provider: porkbun
|
provider: porkbun
|
||||||
delayBeforeCheck: 0
|
delayBeforeCheck: 0
|
||||||
|
resolvers:
|
||||||
|
- "1.1.1.1:53"
|
||||||
|
|
||||||
serversTransport:
|
serversTransport:
|
||||||
insecureSkipVerify: true
|
insecureSkipVerify: true
|
||||||
|
@@ -1,29 +1,29 @@
|
|||||||
porkbun_api_key: !vault |
|
porkbun_api_key: !vault |
|
||||||
$ANSIBLE_VAULT;1.1;AES256
|
$ANSIBLE_VAULT;1.1;AES256
|
||||||
38353531366235383239643438376161613937643431303266663966663930386163353935386135
|
36633865383466613761653530356339306339376335363733623333323337323033643265366239
|
||||||
6135356665626161333763326635306132303162383532650a346130613565323330383739326161
|
3662663339636537643761306131396239643235393939650a366631613839356538363566396136
|
||||||
64353462336430333162333562626432626136616238373237633366336433626231316635636264
|
61613232646335353962326131386439353562663766643230663738666665383234353565316334
|
||||||
6130396265333839300a643766303132376138356531393335336165613966633862623632313461
|
3734343134326662390a343031366435363539396431323434623138643961313066333831376433
|
||||||
65643138383531396630666637623265396461376632393436613964306538383233326562623332
|
37656633383431393161303636366338346362306331666666656531666537343362323562366433
|
||||||
61626536313765303164323862326263396163386266613562326231643234623931323065326466
|
38356339346536333234656263633739663337323462633932393064366434353666643535303835
|
||||||
63643836316336343966613537623330376462373031363535373136333764336133303134653136
|
38326663303539393332356630396636306466313038333932613530316261363036643534666563
|
||||||
62623339616261316164
|
38643762396133386638
|
||||||
|
|
||||||
porkbun_secret_api_key: !vault |
|
porkbun_secret_api_key: !vault |
|
||||||
$ANSIBLE_VAULT;1.1;AES256
|
$ANSIBLE_VAULT;1.1;AES256
|
||||||
30356330383036313732363931663661303336336263306431383835653763643531303830366636
|
39386233356265366265303231306464653832383736623135303732633339343137613637633438
|
||||||
6638323437393130653566613061363061363465306633350a343530356334343232336665663138
|
3565316266613631613039376337343662313635336566330a646138373931373534343236373939
|
||||||
33653737616239306536616139336162313830356462326630336238393137386334623031613833
|
33343733383664653430343432366461386438613164313763643536336639653439396335656538
|
||||||
6633363566373731610a383331386230323336633062623764373566323036663364623232613762
|
3432663033323036620a356337666338656437373966616635646138336463623030376362303735
|
||||||
34636236616432393634366539393036386162343665363338636664393639623532356430613238
|
65373439316665353464303838393166323638643761376632336431666437623262363236616437
|
||||||
33393831323334626335333630366331633464353638353636666430616630306139336665376132
|
61396563306536393636356133613561633838656431343765323033663331626334376234353662
|
||||||
34326563626465633036656134373430616634393931626638636332323562366565326535626237
|
62396539316239653637363661646537316264626436386434373334336130623262343630373739
|
||||||
38313264383866633662
|
64363263623634643536
|
||||||
|
|
||||||
letsencrypt_email: !vault |
|
letsencrypt_email: !vault |
|
||||||
$ANSIBLE_VAULT;1.1;AES256
|
$ANSIBLE_VAULT;1.1;AES256
|
||||||
62353466393863323930373663656438626661393566366336326235666137303932623838353865
|
66616132376664623230326531343438613064353632363466383261626565383136373962613838
|
||||||
3830323761643134656431646632656166656661303963320a343436353633613763643030303364
|
3439623362373931323736663166326364316434303731340a303961376134643530393736366661
|
||||||
38396464663634343131306638383131343466613537346463373765646434393366373939653964
|
65386462643538666664626364613737343738303561366330623738633232376436356138656437
|
||||||
6630626639393637330a386365303332653162383933353265306134383232303635633935623132
|
3363336137313338650a343739623839626632653830376338393162316139343033303261346539
|
||||||
63616137626161323037613062663063373963643263313366613233383536316638
|
64373364616434633438313936376563303437653764633631663431666337323738
|
||||||
|
Reference in New Issue
Block a user