--- - name: Validate Compose project directory is configured ansible.builtin.assert: that: - compose_project_dir | length > 0 - compose_project_compose_template_src | length > 0 fail_msg: "compose_project_dir and compose_project_compose_template_src are required." tags: [compose_project] - name: Create Compose project directories ansible.builtin.file: path: "{{ item }}" state: directory owner: root group: root mode: "0755" loop: "{{ compose_project_directories }}" tags: [compose_project, directories] - name: Ensure Compose project proxy network exists community.docker.docker_network: name: "{{ compose_project_proxy_network }}" state: present when: - compose_project_create_proxy_network | bool - compose_project_proxy_network | length > 0 tags: [compose_project, docker] - name: Render Compose project environment file ansible.builtin.template: src: "{{ compose_project_env_template_src }}" dest: "{{ compose_project_env_dest }}" owner: root group: root mode: "{{ compose_project_env_mode }}" when: compose_project_env_template_src | length > 0 no_log: true tags: [compose_project, config] - name: Render Compose project file ansible.builtin.template: src: "{{ compose_project_compose_template_src }}" dest: "{{ compose_project_compose_dest }}" owner: root group: root mode: "{{ compose_project_compose_mode }}" notify: restart compose project tags: [compose_project, compose] - name: Render Compose project override file ansible.builtin.template: src: "{{ compose_project_override_template_src }}" dest: "{{ compose_project_override_dest }}" owner: root group: root mode: "{{ compose_project_override_mode }}" when: compose_project_override_template_src | length > 0 notify: restart compose project tags: [compose_project, compose] - name: Allow Compose project firewall ports community.general.ufw: rule: allow port: "{{ item.port | default(item.host | default(item.container | default(item))) }}" proto: "{{ item.proto | default(item.protocol | default('tcp')) }}" loop: "{{ compose_project_firewall_ports }}" when: compose_project_firewall_enabled | bool tags: [compose_project, firewall] - name: Start Compose project community.docker.docker_compose_v2: project_src: "{{ compose_project_dir }}" state: "{{ compose_project_state }}" pull: "{{ compose_project_pull }}" tags: [compose_project, compose]