- name: make caddy directories ansible.builtin.file: path: "{{ item}}" state: directory loop: - /opt/stacks/caddy - name: template Caddyfile ansible.builtin.template: src: Caddyfile.j2 dest: /opt/stacks/caddy/Caddyfile owner: root mode: '0640' group: docker notify: restart caddy - name: template caddy compose file ansible.builtin.template: src: caddy-compose.yml.j2 dest: /opt/stacks/caddy/compose.yml owner: root mode: '0644' - name: deploy caddy stack community.docker.docker_compose_v2: project_src: /opt/stacks/caddy recreate: never files: - compose.yml # Lets public traffic through to Caddy. Re-adds the rule if Caddy's IP changed. - name: allow public traffic to caddy ansible.builtin.command: /usr/local/bin/ufw-docker.sh allow caddy-caddy-1 {{ item }} loop: [80/tcp, 443/tcp, 443/udp] register: caddy_ufw changed_when: "'Skipping' not in caddy_ufw.stdout" when: not ansible_check_mode