Création du conteneur Traefik.
This commit is contained in:
parent
b3d82b8848
commit
1f4fe923fa
@ -7,4 +7,7 @@ ansible_python_interpreter=/usr/bin/python3
|
|||||||
www_user=user
|
www_user=user
|
||||||
www_group=group
|
www_group=group
|
||||||
www_home=/home/user
|
www_home=/home/user
|
||||||
|
traefik_dashboard=false
|
||||||
|
traefik_dashboard_host=traefik.example.com
|
||||||
|
traefik_log_level=ERROR
|
||||||
|
traefik_letsencrypt_email=admin@example.com
|
||||||
|
|||||||
@ -13,3 +13,4 @@
|
|||||||
roles:
|
roles:
|
||||||
- wwwuser
|
- wwwuser
|
||||||
- docker
|
- docker
|
||||||
|
- traefik
|
||||||
|
|||||||
54
roles/traefik/tasks/main.yml
Normal file
54
roles/traefik/tasks/main.yml
Normal file
@ -0,0 +1,54 @@
|
|||||||
|
---
|
||||||
|
- name: create directory
|
||||||
|
file:
|
||||||
|
path: "{{ www_home }}/traefik"
|
||||||
|
state: directory
|
||||||
|
owner: "{{ www_user }}"
|
||||||
|
group: "{{ www_group }}"
|
||||||
|
|
||||||
|
- name: check if acme file exists
|
||||||
|
stat:
|
||||||
|
path: "{{ www_home }}/traefik/acme.json"
|
||||||
|
register: acme_file
|
||||||
|
|
||||||
|
- name: create acme file if does not exists
|
||||||
|
file:
|
||||||
|
path: "{{ www_home }}/traefik/acme.json"
|
||||||
|
state: touch
|
||||||
|
mode: 0600
|
||||||
|
owner: "{{ www_user }}"
|
||||||
|
group: "{{ www_group }}"
|
||||||
|
when: acme_file.stat.exists == False
|
||||||
|
|
||||||
|
- name: add config file
|
||||||
|
template:
|
||||||
|
src: traefik.yml.j2
|
||||||
|
dest: "{{ www_home }}/traefik/traefik.yml"
|
||||||
|
mode: 0600
|
||||||
|
owner: "{{ www_user }}"
|
||||||
|
group: "{{ www_group }}"
|
||||||
|
|
||||||
|
- name: create network
|
||||||
|
docker_network:
|
||||||
|
name: web
|
||||||
|
|
||||||
|
- name: create container
|
||||||
|
docker_container:
|
||||||
|
name: traefik
|
||||||
|
image: traefik:2.4
|
||||||
|
restart_policy: unless-stopped
|
||||||
|
recreate: true
|
||||||
|
networks:
|
||||||
|
- name: web
|
||||||
|
ports:
|
||||||
|
- "80:80"
|
||||||
|
- "443:443"
|
||||||
|
volumes:
|
||||||
|
- "{{ www_home }}/traefik/traefik.yml:/etc/traefik/traefik.yml"
|
||||||
|
- "{{ www_home }}/traefik/acme.json:/acme.json"
|
||||||
|
- /var/run/docker.sock:/var/run/docker.sock
|
||||||
|
labels:
|
||||||
|
traefik.enable: "true"
|
||||||
|
traefik.http.routers.dashboard.rule: Host(`{{ traefik_dashboard_host }}`)
|
||||||
|
traefik.http.routers.dashboard.entryPoints: http
|
||||||
|
traefik.http.routers.dashboard.service: api@internal
|
||||||
24
roles/traefik/templates/traefik.yml.j2
Normal file
24
roles/traefik/templates/traefik.yml.j2
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
entryPoints:
|
||||||
|
http:
|
||||||
|
address: :80
|
||||||
|
https:
|
||||||
|
address: :443
|
||||||
|
|
||||||
|
log:
|
||||||
|
level: {{ traefik_log_level | default('ERROR') }}
|
||||||
|
|
||||||
|
api:
|
||||||
|
dashboard: {{ traefik_dashboard | default(false) }}
|
||||||
|
|
||||||
|
providers:
|
||||||
|
docker:
|
||||||
|
network: web
|
||||||
|
exposedByDefault: false
|
||||||
|
|
||||||
|
certificatesResolvers:
|
||||||
|
letsencrypt:
|
||||||
|
acme:
|
||||||
|
email: "{{ traefik_letsencrypt_email }}"
|
||||||
|
storage: "acme.json"
|
||||||
|
httpChallenge:
|
||||||
|
entryPoint: http
|
||||||
Loading…
x
Reference in New Issue
Block a user