Initial commit
This commit is contained in:
96
roles/dotfiles/tasks/main.yml
Normal file
96
roles/dotfiles/tasks/main.yml
Normal file
@@ -0,0 +1,96 @@
|
||||
---
|
||||
- name: Find common dotfiles (excluding templates)
|
||||
ansible.builtin.find:
|
||||
paths: "{{ playbook_dir }}/dotfiles/common"
|
||||
recurse: true
|
||||
file_type: file
|
||||
hidden: true
|
||||
excludes: "*.j2"
|
||||
delegate_to: localhost
|
||||
register: dotfiles_common_files
|
||||
run_once: true
|
||||
|
||||
- name: Find group dotfiles (excluding templates)
|
||||
ansible.builtin.find:
|
||||
paths: "{{ playbook_dir }}/dotfiles/{{ item }}"
|
||||
recurse: true
|
||||
file_type: file
|
||||
hidden: true
|
||||
excludes: "*.j2"
|
||||
loop: "{{ group_names | default([]) }}"
|
||||
delegate_to: localhost
|
||||
register: dotfiles_group_files
|
||||
run_once: true
|
||||
ignore_errors: true
|
||||
|
||||
- name: Deploy common dotfiles (remote)
|
||||
ansible.builtin.copy:
|
||||
src: "{{ item.path }}"
|
||||
dest: "{{ ansible_facts['env']['HOME'] }}/{{ item.path | replace(playbook_dir + '/dotfiles/common/', '') }}"
|
||||
mode: preserve
|
||||
loop: "{{ dotfiles_common_files.files }}"
|
||||
when: ansible_connection not in ['local', 'localhost']
|
||||
|
||||
- name: Deploy group dotfiles (remote)
|
||||
ansible.builtin.copy:
|
||||
src: "{{ item.1.path }}"
|
||||
dest: "{{ ansible_facts['env']['HOME'] }}/{{ item.1.path | replace(playbook_dir + '/dotfiles/' + item.0.item + '/', '') }}"
|
||||
mode: preserve
|
||||
loop: "{{ dotfiles_group_files.results | subelements('files', skip_missing=True) }}"
|
||||
when: ansible_connection not in ['local', 'localhost']
|
||||
|
||||
- name: Symlink common dotfiles (local)
|
||||
ansible.builtin.file:
|
||||
src: "{{ item.path }}"
|
||||
dest: "{{ ansible_facts['env']['HOME'] }}/{{ item.path | replace((playbook_dir + '/dotfiles/common/'), '') }}"
|
||||
state: link
|
||||
force: true
|
||||
loop: "{{ dotfiles_common_files.files }}"
|
||||
when: ansible_connection in ['local', 'localhost']
|
||||
|
||||
- name: Symlink group dotfiles (local)
|
||||
ansible.builtin.file:
|
||||
src: "{{ item.1.path }}"
|
||||
dest: "{{ ansible_facts['env']['HOME'] }}/{{ item.1.path | replace((playbook_dir + '/dotfiles/' + item.0.item + '/'), '') }}"
|
||||
state: link
|
||||
force: true
|
||||
loop: "{{ dotfiles_group_files.results | subelements('files') }}"
|
||||
when: ansible_connection in ['local', 'localhost']
|
||||
|
||||
- name: Find template files in common dotfiles
|
||||
ansible.builtin.find:
|
||||
paths: "{{ playbook_dir }}/dotfiles/common"
|
||||
recurse: true
|
||||
file_type: file
|
||||
hidden: true
|
||||
patterns: "*.j2"
|
||||
delegate_to: localhost
|
||||
register: dotfiles_common_templates
|
||||
run_once: true
|
||||
|
||||
- name: Find template files in group dotfiles
|
||||
ansible.builtin.find:
|
||||
paths: "{{ playbook_dir }}/dotfiles/{{ item }}"
|
||||
recurse: true
|
||||
file_type: file
|
||||
hidden: true
|
||||
patterns: "*.j2"
|
||||
loop: "{{ group_names | default([]) }}"
|
||||
delegate_to: localhost
|
||||
register: dotfiles_group_templates
|
||||
run_once: true
|
||||
ignore_errors: true
|
||||
|
||||
- name: Template common dotfiles
|
||||
ansible.builtin.template:
|
||||
src: "{{ item.path }}"
|
||||
dest: "{{ ansible_facts['env']['HOME'] }}/{{ item.path | replace(playbook_dir + '/dotfiles/common/', '') | replace('.j2', '') }}"
|
||||
mode: '0600'
|
||||
loop: "{{ dotfiles_common_templates.files }}"
|
||||
|
||||
- name: Template group dotfiles
|
||||
ansible.builtin.template:
|
||||
src: "{{ item.1.path }}"
|
||||
dest: "{{ ansible_facts['env']['HOME'] }}/{{ item.1.path | replace(playbook_dir + '/dotfiles/' + item.0.item + '/', '') | replace('.j2', '') }}"
|
||||
mode: '0600'
|
||||
loop: "{{ dotfiles_group_templates.results | subelements('files', skip_missing=True) }}"
|
||||
Reference in New Issue
Block a user