--- - name: "Configure caddy reverse proxy service" hosts: all vars_files: - vars/ports.yml - vars/vars.yml vars: app_name: "caddyproxy" app_user: "{{ app_name }}" base_dir: "/home/{{ app_user }}" data_dir: "{{ (base_dir, 'data') | path_join }}" config_dir: "{{ (base_dir, 'config') | path_join }}" caddy_file_dir: "{{ (base_dir, 'caddy_file') | path_join }}" service_name: "{{ app_name }}" tasks: - name: "Create user and environment" ansible.builtin.import_role: name: owner vars: owner_name: "{{ app_user }}" owner_extra_groups: - "docker" - name: "Create internal application directories" ansible.builtin.file: path: "{{ item }}" state: "directory" owner: "{{ app_user }}" group: "{{ app_user }}" mode: "0770" loop: - "{{ data_dir }}" - "{{ config_dir }}" - "{{ caddy_file_dir }}" - name: "Copy caddy file" ansible.builtin.template: src: "./files/{{ app_name }}/Caddyfile.j2" dest: "{{ (caddy_file_dir, 'Caddyfile') | path_join }}" owner: "{{ app_user }}" group: "{{ app_user }}" mode: "0640" - name: "Copy docker compose file" ansible.builtin.template: src: "./files/{{ app_name }}/docker-compose.yml.j2" dest: "{{ base_dir }}/docker-compose.yml" owner: "{{ app_user }}" group: "{{ app_user }}" mode: "0640" - name: "Run application with docker compose" community.docker.docker_compose_v2: project_src: "{{ base_dir }}" state: "present" remove_orphans: true - name: "Reload caddy" community.docker.docker_compose_v2_exec: project_src: '{{ base_dir }}' service: "{{ service_name }}" command: caddy reload --config /etc/caddy/Caddyfile