Refactor to reduce config in group_vars
This commit is contained in:
@@ -1,20 +1,45 @@
|
||||
---
|
||||
- name: Deploy selected home dotfile packages
|
||||
ansible.builtin.include_tasks: ../../deploy_files.yml
|
||||
vars:
|
||||
var_prefix: dotfiles_home
|
||||
subdir: "home/{{ item }}"
|
||||
target_root: "{{ ansible_facts.env.HOME }}"
|
||||
use_symlinks: true
|
||||
become_root: false
|
||||
loop: "{{ dotfiles_home_packages | default([]) }}"
|
||||
- name: Discover dotfile packages
|
||||
ansible.builtin.find:
|
||||
paths: "{{ role_path }}"
|
||||
file_type: directory
|
||||
depth: 1
|
||||
excludes: ['tasks', 'templates', 'files', 'vars', 'defaults', 'meta', 'handlers']
|
||||
register: dotfiles_packages
|
||||
|
||||
- name: Deploy selected root dotfile packages
|
||||
ansible.builtin.include_tasks: ../../deploy_files.yml
|
||||
vars:
|
||||
var_prefix: dotfiles_root
|
||||
subdir: "root/{{ item }}"
|
||||
target_root: "/"
|
||||
use_symlinks: true
|
||||
become_root: true
|
||||
loop: "{{ dotfiles_root_packages | default([]) }}"
|
||||
- name: Build complete file list
|
||||
ansible.builtin.set_fact:
|
||||
dotfiles_files: "{{ dotfiles_files | default([]) + lookup('community.general.filetree', item.path, wantlist=True) | selectattr('state', 'equalto', 'file') | list }}"
|
||||
loop: "{{ dotfiles_packages.files }}"
|
||||
|
||||
- name: Ensure dotfile directories exist
|
||||
ansible.builtin.file:
|
||||
path: "{{ ansible_facts.env.HOME }}/{{ item.path | dirname }}"
|
||||
state: directory
|
||||
mode: "0755"
|
||||
loop: "{{ dotfiles_files }}"
|
||||
when: item.path | dirname != ''
|
||||
|
||||
- name: Deploy dotfiles (local with symlinks)
|
||||
ansible.builtin.file:
|
||||
src: "{{ item.src }}"
|
||||
dest: "{{ ansible_facts.env.HOME }}/{{ item.path }}"
|
||||
state: link
|
||||
force: true
|
||||
loop: "{{ dotfiles_files | rejectattr('path', 'match', '.*\\.j2$') | list }}"
|
||||
when: ansible_connection in ['local', 'localhost']
|
||||
|
||||
- name: Deploy dotfiles (remote with copy)
|
||||
ansible.builtin.copy:
|
||||
src: "{{ item.src }}"
|
||||
dest: "{{ ansible_facts.env.HOME }}/{{ item.path }}"
|
||||
mode: preserve
|
||||
loop: "{{ dotfiles_files | rejectattr('path', 'match', '.*\\.j2$') | list }}"
|
||||
when: ansible_connection not in ['local', 'localhost']
|
||||
|
||||
- name: Render dotfile templates
|
||||
ansible.builtin.template:
|
||||
src: "{{ item.src }}"
|
||||
dest: "{{ ansible_facts.env.HOME }}/{{ item.path | replace('.j2', '') }}"
|
||||
mode: preserve
|
||||
loop: "{{ dotfiles_files | selectattr('path', 'match', '.*\\.j2$') | list }}"
|
||||
Reference in New Issue
Block a user