Add symlink support
This commit is contained in:
@@ -5,6 +5,8 @@
|
|||||||
}
|
}
|
||||||
],
|
],
|
||||||
"settings": {
|
"settings": {
|
||||||
"ansible.python.interpreterPath": "/home/bryan/.virtualenvs/deploy/bin/python"
|
"ansible.python.interpreterPath": "/home/bryan/.virtualenvs/deploy/bin/python",
|
||||||
}
|
"search.followSymlinks": false,
|
||||||
|
},
|
||||||
|
|
||||||
}
|
}
|
||||||
8
dotfiles/common/root/etc/dnf/dnf.conf
Normal file
8
dotfiles/common/root/etc/dnf/dnf.conf
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# see `man dnf.conf` for defaults and possible options
|
||||||
|
|
||||||
|
[main]
|
||||||
|
# installonly_limit=3
|
||||||
|
# best=False
|
||||||
|
skip_if_unavailable=True
|
||||||
|
deltarpm=True
|
||||||
|
fastestmirror=True
|
||||||
20
group_vars/all/dotfiles.yml
Normal file
20
group_vars/all/dotfiles.yml
Normal file
@@ -0,0 +1,20 @@
|
|||||||
|
---
|
||||||
|
symlinks:
|
||||||
|
- name: develop
|
||||||
|
src: "{{ lookup('env', 'HOME') }}/documents/develop"
|
||||||
|
dest: "{{ lookup('env', 'HOME') }}/develop"
|
||||||
|
- name: music
|
||||||
|
src: "{{ lookup('env', 'HOME') }}/media/music"
|
||||||
|
dest: "{{ lookup('env', 'HOME') }}/music"
|
||||||
|
- name: pictures
|
||||||
|
src: "{{ lookup('env', 'HOME') }}/media/pictures"
|
||||||
|
dest: "{{ lookup('env', 'HOME') }}/pictures"
|
||||||
|
- name: videos
|
||||||
|
src: "{{ lookup('env', 'HOME') }}/media/videos"
|
||||||
|
dest: "{{ lookup('env', 'HOME') }}/videos"
|
||||||
|
- name: ebooks
|
||||||
|
src: "{{ lookup('env', 'HOME') }}/media/ebooks"
|
||||||
|
dest: "{{ lookup('env', 'HOME') }}/ebooks"
|
||||||
|
- name: bin
|
||||||
|
src: "{{ lookup('env', 'HOME') }}/.local/bin"
|
||||||
|
dest: "{{ lookup('env', 'HOME') }}/bin"
|
||||||
@@ -1,202 +1,115 @@
|
|||||||
---
|
---
|
||||||
- name: Find common home dotfiles (excluding templates)
|
- name: Find home dotfiles (excluding templates)
|
||||||
ansible.builtin.find:
|
ansible.builtin.find:
|
||||||
paths: "{{ playbook_dir }}/dotfiles/common/home"
|
paths:
|
||||||
|
- "{{ playbook_dir }}/dotfiles/common/home"
|
||||||
|
- "{{ playbook_dir }}/dotfiles/{{ group_names[0] }}/home"
|
||||||
recurse: true
|
recurse: true
|
||||||
file_type: file
|
file_type: file
|
||||||
hidden: true
|
hidden: true
|
||||||
excludes: "*.j2"
|
excludes: "*.j2"
|
||||||
delegate_to: localhost
|
delegate_to: localhost
|
||||||
register: dotfiles_common_home_files
|
register: dotfiles_home_files
|
||||||
run_once: true
|
run_once: true
|
||||||
ignore_errors: true
|
ignore_errors: true
|
||||||
|
|
||||||
- name: Find common root dotfiles (excluding templates)
|
- name: Find root dotfiles (excluding templates)
|
||||||
ansible.builtin.find:
|
ansible.builtin.find:
|
||||||
paths: "{{ playbook_dir }}/dotfiles/common/root"
|
paths:
|
||||||
|
- "{{ playbook_dir }}/dotfiles/common/root"
|
||||||
|
- "{{ playbook_dir }}/dotfiles/{{ group_names[0] }}/root"
|
||||||
recurse: true
|
recurse: true
|
||||||
file_type: file
|
file_type: file
|
||||||
hidden: true
|
hidden: true
|
||||||
excludes: "*.j2"
|
excludes: "*.j2"
|
||||||
delegate_to: localhost
|
delegate_to: localhost
|
||||||
register: dotfiles_common_root_files
|
register: dotfiles_root_files
|
||||||
run_once: true
|
run_once: true
|
||||||
ignore_errors: true
|
ignore_errors: true
|
||||||
|
|
||||||
- name: Find group home dotfiles (excluding templates)
|
- name: Find home template files
|
||||||
ansible.builtin.find:
|
ansible.builtin.find:
|
||||||
paths: "{{ playbook_dir }}/dotfiles/{{ item }}/home"
|
paths:
|
||||||
recurse: true
|
- "{{ playbook_dir }}/dotfiles/common/home"
|
||||||
file_type: file
|
- "{{ playbook_dir }}/dotfiles/{{ group_names[0] }}/home"
|
||||||
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
|
recurse: true
|
||||||
file_type: file
|
file_type: file
|
||||||
hidden: true
|
hidden: true
|
||||||
patterns: "*.j2"
|
patterns: "*.j2"
|
||||||
delegate_to: localhost
|
delegate_to: localhost
|
||||||
register: dotfiles_common_home_templates
|
register: dotfiles_home_templates
|
||||||
run_once: true
|
run_once: true
|
||||||
ignore_errors: true
|
ignore_errors: true
|
||||||
|
|
||||||
- name: Find template files in common root dotfiles
|
- name: Find root template files
|
||||||
ansible.builtin.find:
|
ansible.builtin.find:
|
||||||
paths: "{{ playbook_dir }}/dotfiles/common/root"
|
paths:
|
||||||
|
- "{{ playbook_dir }}/dotfiles/common/root"
|
||||||
|
- "{{ playbook_dir }}/dotfiles/{{ group_names[0] }}/root"
|
||||||
recurse: true
|
recurse: true
|
||||||
file_type: file
|
file_type: file
|
||||||
hidden: true
|
hidden: true
|
||||||
patterns: "*.j2"
|
patterns: "*.j2"
|
||||||
delegate_to: localhost
|
delegate_to: localhost
|
||||||
register: dotfiles_common_root_templates
|
register: dotfiles_root_templates
|
||||||
run_once: true
|
run_once: true
|
||||||
ignore_errors: true
|
ignore_errors: true
|
||||||
|
|
||||||
- name: Find template files in group home dotfiles
|
- name: Symlink home dotfiles (local)
|
||||||
ansible.builtin.find:
|
ansible.builtin.file:
|
||||||
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 }}"
|
src: "{{ item.path }}"
|
||||||
dest: "{{ ansible_facts['env']['HOME'] }}/{{ item.path | replace(playbook_dir + '/dotfiles/common/home/', '') | replace('.j2', '') }}"
|
dest: "{{ ansible_facts['env']['HOME'] }}/{{ item.path | regex_replace('^.+/dotfiles/(?:common|' + group_names[0] + ')/home/', '') }}"
|
||||||
mode: '0600'
|
state: link
|
||||||
loop: "{{ dotfiles_common_home_templates.files }}"
|
force: true
|
||||||
|
loop: "{{ dotfiles_home_files.files }}"
|
||||||
|
when: ansible_connection in ['local', 'localhost']
|
||||||
|
|
||||||
- name: Template common root dotfiles
|
- name: Symlink root dotfiles (local)
|
||||||
ansible.builtin.template:
|
ansible.builtin.file:
|
||||||
src: "{{ item.path }}"
|
src: "{{ item.path }}"
|
||||||
dest: "/{{ item.path | replace(playbook_dir + '/dotfiles/common/root/', '') | replace('.j2', '') }}"
|
dest: "/{{ item.path | regex_replace('^.+/dotfiles/(?:common|' + group_names[0] + ')/root/', '') }}"
|
||||||
mode: '0600'
|
state: link
|
||||||
loop: "{{ dotfiles_common_root_templates.files }}"
|
force: true
|
||||||
|
loop: "{{ dotfiles_root_files.files }}"
|
||||||
|
when: ansible_connection in ['local', 'localhost']
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
- name: Template group home dotfiles
|
- name: Deploy home dotfiles (remote)
|
||||||
ansible.builtin.template:
|
ansible.builtin.copy:
|
||||||
src: "{{ item.1.path }}"
|
src: "{{ item.path }}"
|
||||||
dest: "{{ ansible_facts['env']['HOME'] }}/{{ item.1.path | replace(playbook_dir + '/dotfiles/' + item.0.item + '/home/', '') | replace('.j2', '') }}"
|
dest: "{{ ansible_facts['env']['HOME'] }}/{{ item.path | regex_replace('^.+/dotfiles/(?:common|' + group_names[0] + ')/home/', '') }}"
|
||||||
mode: '0600'
|
mode: preserve
|
||||||
loop: "{{ dotfiles_group_home_templates.results | subelements('files', skip_missing=True) }}"
|
loop: "{{ dotfiles_home_files.files }}"
|
||||||
|
when: ansible_connection not in ['local', 'localhost']
|
||||||
|
|
||||||
- name: Template group root dotfiles
|
- name: Deploy root dotfiles (remote)
|
||||||
ansible.builtin.template:
|
ansible.builtin.copy:
|
||||||
src: "{{ item.1.path }}"
|
src: "{{ item.path }}"
|
||||||
dest: "/{{ item.1.path | replace(playbook_dir + '/dotfiles/' + item.0.item + '/root/', '') | replace('.j2', '') }}"
|
dest: "/{{ item.path | regex_replace('^.+/dotfiles/(?:common|' + group_names[0] + ')/root/', '') }}"
|
||||||
mode: '0600'
|
mode: preserve
|
||||||
loop: "{{ dotfiles_group_root_templates.results | subelements('files', skip_missing=True) }}"
|
loop: "{{ dotfiles_root_files.files }}"
|
||||||
|
when: ansible_connection not in ['local', 'localhost']
|
||||||
become: true
|
become: true
|
||||||
|
|
||||||
|
- name: Template home dotfiles
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: "{{ item.path }}"
|
||||||
|
dest: "{{ ansible_facts['env']['HOME'] }}/{{ item.path | regex_replace('^.+/dotfiles/(?:common|' + group_names[0] + ')/home/', '') | replace('.j2', '') }}"
|
||||||
|
mode: '0600'
|
||||||
|
loop: "{{ dotfiles_home_templates.files }}"
|
||||||
|
|
||||||
|
- name: Template root dotfiles
|
||||||
|
ansible.builtin.template:
|
||||||
|
src: "{{ item.path }}"
|
||||||
|
dest: "/{{ item.path | regex_replace('^.+/dotfiles/(?:common|' + group_names[0] + ')/root/', '') | replace('.j2', '') }}"
|
||||||
|
mode: '0600'
|
||||||
|
loop: "{{ dotfiles_root_templates.files }}"
|
||||||
|
become: true
|
||||||
|
|
||||||
|
- name: Deploy symlinks
|
||||||
|
ansible.builtin.file:
|
||||||
|
src: "{{ item.src }}"
|
||||||
|
dest: "{{ item.dest }}"
|
||||||
|
state: link
|
||||||
|
force: true
|
||||||
|
loop: "{{ symlinks | default([]) }}"
|
||||||
|
|||||||
Reference in New Issue
Block a user