--- - name: Starting setup project. ansible.builtin.debug: msg: "Project dir: {{ project_dir }}" tags: - always - name: Debug template vars pre parse. ansible.builtin.debug: var: template tags: - debug - never - name: Debug build dir. ansible.builtin.debug: var: build_dir tags: - debug - never - name: Parse template facts. ansible.builtin.include_role: name: "prepare-template-facts" tags: - setup-project - never - name: Debug template path post parse. ansible.builtin.debug: var: template_dir tags: - debug - never - name: Ensure output directory exists. ansible.builtin.file: path: "{{ project_dir }}" state: directory tags: - setup-project - never - name: Load template vars. ansible.builtin.include_role: name: "load-template-vars" tags: - setup-project - never - name: Debug on_setup. ansible.builtin.debug: msg: "On setup vars: {{ copy_on_setup }}" tags: - debug - never - name: Debug copy directory contents. ansible.builtin.debug: var: copy_directory_on_setup tags: - debug - never - name: Check if project has been previously setup. ansible.builtin.stat: path: "{{ project_dir }}/.setup" register: setup_file tags: - setup-project - never - name: Debug setup file stat. ansible.builtin.debug: var: setup_file.exists tags: - debug - never - name: Copy directory contents to project directory. ansible.builtin.command: | cp -r "{{ template_dir }}/{{ item.src | default(item) }}/." \ "{{ item.dest | default(project_dir) }}" with_items: "{{ copy_directory_on_setup }}" when: setup_file.stat.exists is false register: copy_directory_stat tags: - setup-project - never - name: Debug copy directory stat. ansible.builtin.debug: var: copy_directory_stat tags: - debug - never - name: Copy project files. ansible.builtin.include_tasks: file: "copy_if_not_exists.yml" vars: source: "{{ template_dir }}/{{ item.src | default(item) }}" destination: "{{ project_dir }}/{{ item.dest | default(item) }}" mode: "{{ item.mode | default('0600') }}" loop: "{{ copy_on_setup }}" tags: - setup-project - never - name: Create setup file. ansible.builtin.template: src: "templates/setup.txt" dest: "{{ project_dir }}/.setup" mode: '0600' when: not setup_file.stat.exists tags: - setup-project - never