--- - name: Find common home dotfiles (excluding templates) ansible.builtin.find: paths: "{{ playbook_dir }}/dotfiles/common/home" recurse: true file_type: file hidden: true excludes: "*.j2" delegate_to: localhost register: dotfiles_common_home_files run_once: true ignore_errors: true - name: Find common root dotfiles (excluding templates) ansible.builtin.find: paths: "{{ playbook_dir }}/dotfiles/common/root" recurse: true file_type: file hidden: true excludes: "*.j2" delegate_to: localhost register: dotfiles_common_root_files run_once: true ignore_errors: true - name: Find group home dotfiles (excluding templates) ansible.builtin.find: paths: "{{ playbook_dir }}/dotfiles/{{ item }}/home" recurse: true file_type: file hidden: true excludes: "*.j2" loop: "{{ group_names | default([]) }}" delegate_to: localhost register: dotfiles_group_home_files run_once: true ignore_errors: true - name: Find group root dotfiles (excluding templates) ansible.builtin.find: paths: "{{ playbook_dir }}/dotfiles/{{ item }}/root" recurse: true file_type: file hidden: true excludes: "*.j2" loop: "{{ group_names | default([]) }}" delegate_to: localhost register: dotfiles_group_root_files run_once: true ignore_errors: true - name: Deploy common home dotfiles (remote) ansible.builtin.copy: src: "{{ item.path }}" dest: "{{ ansible_facts['env']['HOME'] }}/{{ item.path | replace(playbook_dir + '/dotfiles/common/home/', '') }}" mode: preserve loop: "{{ dotfiles_common_home_files.files }}" when: ansible_connection not in ['local', 'localhost'] - name: Deploy common root dotfiles (remote) ansible.builtin.copy: src: "{{ item.path }}" dest: "/{{ item.path | replace(playbook_dir + '/dotfiles/common/root/', '') }}" mode: preserve loop: "{{ dotfiles_common_root_files.files }}" when: ansible_connection not in ['local', 'localhost'] become: true - name: Deploy group home dotfiles (remote) ansible.builtin.copy: src: "{{ item.1.path }}" dest: "{{ ansible_facts['env']['HOME'] }}/{{ item.1.path | replace(playbook_dir + '/dotfiles/' + item.0.item + '/home/', '') }}" mode: preserve loop: "{{ dotfiles_group_home_files.results | subelements('files', skip_missing=True) }}" when: ansible_connection not in ['local', 'localhost'] - name: Deploy group root dotfiles (remote) ansible.builtin.copy: src: "{{ item.1.path }}" dest: "/{{ item.1.path | replace(playbook_dir + '/dotfiles/' + item.0.item + '/root/', '') }}" mode: preserve loop: "{{ dotfiles_group_root_files.results | subelements('files', skip_missing=True) }}" when: ansible_connection not in ['local', 'localhost'] become: true - name: Symlink common home dotfiles (local) ansible.builtin.file: src: "{{ item.path }}" dest: "{{ ansible_facts['env']['HOME'] }}/{{ item.path | replace((playbook_dir + '/dotfiles/common/home/'), '') }}" state: link force: true loop: "{{ dotfiles_common_home_files.files }}" when: ansible_connection in ['local', 'localhost'] - name: Symlink common root dotfiles (local) ansible.builtin.file: src: "{{ item.path }}" dest: "/{{ item.path | replace((playbook_dir + '/dotfiles/common/root/'), '') }}" state: link force: true loop: "{{ dotfiles_common_root_files.files }}" when: ansible_connection in ['local', 'localhost'] become: true - name: Symlink group home dotfiles (local) ansible.builtin.file: src: "{{ item.1.path }}" dest: "{{ ansible_facts['env']['HOME'] }}/{{ item.1.path | replace((playbook_dir + '/dotfiles/' + item.0.item + '/home/'), '') }}" state: link force: true loop: "{{ dotfiles_group_home_files.results | subelements('files', skip_missing=True) }}" when: ansible_connection in ['local', 'localhost'] - name: Symlink group root dotfiles (local) ansible.builtin.file: src: "{{ item.1.path }}" dest: "/{{ item.1.path | replace((playbook_dir + '/dotfiles/' + item.0.item + '/root/'), '') }}" state: link force: true loop: "{{ dotfiles_group_root_files.results | subelements('files', skip_missing=True) }}" when: ansible_connection in ['local', 'localhost'] become: true - name: Find template files in common home dotfiles ansible.builtin.find: paths: "{{ playbook_dir }}/dotfiles/common/home" recurse: true file_type: file hidden: true patterns: "*.j2" delegate_to: localhost register: dotfiles_common_home_templates run_once: true ignore_errors: true - name: Find template files in common root dotfiles ansible.builtin.find: paths: "{{ playbook_dir }}/dotfiles/common/root" recurse: true file_type: file hidden: true patterns: "*.j2" delegate_to: localhost register: dotfiles_common_root_templates run_once: true ignore_errors: true - name: Find template files in group home dotfiles ansible.builtin.find: paths: "{{ playbook_dir }}/dotfiles/{{ item }}/home" recurse: true file_type: file hidden: true patterns: "*.j2" loop: "{{ group_names | default([]) }}" delegate_to: localhost register: dotfiles_group_home_templates run_once: true ignore_errors: true - name: Find template files in group root dotfiles ansible.builtin.find: paths: "{{ playbook_dir }}/dotfiles/{{ item }}/root" recurse: true file_type: file hidden: true patterns: "*.j2" loop: "{{ group_names | default([]) }}" delegate_to: localhost register: dotfiles_group_root_templates run_once: true ignore_errors: true - name: Template common home dotfiles ansible.builtin.template: src: "{{ item.path }}" dest: "{{ ansible_facts['env']['HOME'] }}/{{ item.path | replace(playbook_dir + '/dotfiles/common/home/', '') | replace('.j2', '') }}" mode: '0600' loop: "{{ dotfiles_common_home_templates.files }}" - name: Template common root dotfiles ansible.builtin.template: src: "{{ item.path }}" dest: "/{{ item.path | replace(playbook_dir + '/dotfiles/common/root/', '') | replace('.j2', '') }}" mode: '0600' loop: "{{ dotfiles_common_root_templates.files }}" become: true - name: Template group home dotfiles ansible.builtin.template: src: "{{ item.1.path }}" dest: "{{ ansible_facts['env']['HOME'] }}/{{ item.1.path | replace(playbook_dir + '/dotfiles/' + item.0.item + '/home/', '') | replace('.j2', '') }}" mode: '0600' loop: "{{ dotfiles_group_home_templates.results | subelements('files', skip_missing=True) }}" - name: Template group root dotfiles ansible.builtin.template: src: "{{ item.1.path }}" dest: "/{{ item.1.path | replace(playbook_dir + '/dotfiles/' + item.0.item + '/root/', '') | replace('.j2', '') }}" mode: '0600' loop: "{{ dotfiles_group_root_templates.results | subelements('files', skip_missing=True) }}" become: true