76 lines
1.9 KiB
YAML
76 lines
1.9 KiB
YAML
# ------------------------------------------------------------------------------
|
|
# FILE: roles/traefik/tasks/main.yml
|
|
# DESCRIPTION: Deploys Traefik as a Docker Compose stack with Cloudflare
|
|
# DNS-01 certificate resolution for *.local.mk-labs.cloud
|
|
# ------------------------------------------------------------------------------
|
|
|
|
- name: Create Traefik directory structure
|
|
file:
|
|
path: "{{ item }}"
|
|
state: directory
|
|
owner: "{{ ansible_user }}"
|
|
group: docker
|
|
mode: '0775'
|
|
loop:
|
|
- "{{ traefik_base_dir }}"
|
|
- "{{ traefik_config_dir }}"
|
|
- "{{ traefik_config_dir }}/dynamic"
|
|
- "{{ traefik_certs_dir }}"
|
|
- "{{ traefik_logs_dir }}"
|
|
|
|
- name: Create acme.json for certificate storage
|
|
file:
|
|
path: "{{ traefik_certs_dir }}/acme.json"
|
|
state: touch
|
|
owner: root
|
|
group: root
|
|
mode: '0600'
|
|
modification_time: preserve
|
|
access_time: preserve
|
|
|
|
- name: Deploy Traefik static configuration
|
|
template:
|
|
src: traefik.yml.j2
|
|
dest: "{{ traefik_config_dir }}/traefik.yml"
|
|
owner: "{{ ansible_user }}"
|
|
group: docker
|
|
mode: '0644'
|
|
notify: restart traefik
|
|
|
|
- name: Deploy dynamic configuration
|
|
template:
|
|
src: dynamic.yml.j2
|
|
dest: "{{ traefik_config_dir }}/dynamic/default.yml"
|
|
owner: "{{ ansible_user }}"
|
|
group: docker
|
|
mode: '0644'
|
|
notify: restart traefik
|
|
|
|
- name: Deploy Docker Compose file
|
|
template:
|
|
src: compose.yml.j2
|
|
dest: "{{ traefik_base_dir }}/compose.yml"
|
|
owner: "{{ ansible_user }}"
|
|
group: docker
|
|
mode: '0644'
|
|
notify: restart traefik
|
|
|
|
- name: Deploy environment file
|
|
template:
|
|
src: env.j2
|
|
dest: "{{ traefik_base_dir }}/.env"
|
|
owner: "{{ ansible_user }}"
|
|
group: docker
|
|
mode: '0600'
|
|
notify: restart traefik
|
|
|
|
- name: Create Traefik Docker network
|
|
docker_network:
|
|
name: "{{ traefik_network }}"
|
|
state: present
|
|
|
|
- name: Start Traefik
|
|
community.docker.docker_compose_v2:
|
|
project_src: "{{ traefik_base_dir }}"
|
|
state: present
|