Files
homelab/ansible/roles/traefik/tasks/main.yml

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