--- - name: Create Traefik installation directory file: path: "{{ traefik_install_dir }}" state: directory owner: root group: root mode: '0755' tags: - traefik-deploy - directories - name: Create Traefik data directory file: path: "{{ traefik_data_dir }}" state: directory owner: root group: root mode: '0755' tags: - traefik-deploy - directories - name: Create Traefik config directory file: path: "{{ traefik_config_dir }}" state: directory owner: root group: root mode: '0755' tags: - traefik-deploy - directories - name: Create ACME storage file file: path: "{{ traefik_data_dir }}/acme.json" state: touch owner: root group: root mode: '0600' tags: - traefik-deploy - config - name: Download custom root CA certificate get_url: url: "{{ traefik_custom_ca_url }}" dest: "{{ traefik_custom_ca_path }}" mode: '0644' owner: root group: root validate_certs: "{{ traefik_custom_ca_verify_ssl }}" timeout: 30 when: traefik_custom_ca_enabled | default(false) and traefik_custom_ca_url | default('') != '' notify: restart traefik tags: - traefik-deploy - custom-ca - name: Create Traefik static configuration template: src: traefik.yml.j2 dest: "{{ traefik_config_dir }}/traefik.yml" mode: '0644' notify: restart traefik tags: - traefik-deploy - config - name: Create Traefik Docker Compose file template: src: docker-compose.yml.j2 dest: "{{ traefik_install_dir }}/docker-compose.yml" mode: '0644' notify: restart traefik tags: - traefik-deploy - config - name: Start Traefik services community.docker.docker_compose_v2: project_src: "{{ traefik_install_dir }}" state: present tags: - traefik-deploy - docker-start - name: Wait for Traefik to be ready uri: url: "https://traefik.{{ traefik_domain | default('localhost') }}/api/rawdata" method: GET status_code: 200 ca_path: "{{ traefik_custom_ca_path }}" register: traefik_ready until: traefik_ready.status == 200 retries: 30 delay: 5 tags: - traefik-deploy - health-check