SHA256
1
0

Organize dotfiles by scope

This commit is contained in:
2025-12-14 15:37:19 -05:00
parent 3e563adc9f
commit b09ab49aa0
18 changed files with 171 additions and 58 deletions

2
ansible.cfg Normal file
View File

@@ -0,0 +1,2 @@
[defaults]
inventory = inventories/hosts.ini

View File

@@ -1,5 +1,5 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# ansible-playbook -i inventories/hosts playbook.yml -l laptop-local --ask-vault-pass --ask-become-pass --check --diff # ansible-playbook -l laptop-local --ask-vault-pass --ask-become-pass --check --diff
ansible-playbook -i inventories/hosts playbook.yml -l laptop-local --ask-vault-pass --ask-become-pass --diff "$@" ansible-playbook playbook.yml -l laptop-local --ask-vault-pass --ask-become-pass --diff "$@"

View File

@@ -1,5 +1,5 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# ansible-playbook -i inventories/hosts playbook.yml -l testing-remote --ask-vault-pass --ask-become-pass --check --diff # ansible-playbook playbook.yml -l testing-remote --ask-vault-pass --ask-become-pass --check --diff
ansible-playbook -i inventories/hosts playbook.yml -l testing-remote --ask-vault-pass --ask-become-pass --diff "$@" ansible-playbook playbook.yml -l testing-remote --ask-vault-pass --ask-become-pass --diff "$@"

View File

@@ -1,5 +1,5 @@
#!/usr/bin/env bash #!/usr/bin/env bash
# ansible-playbook -i inventories/hosts playbook.yml -l workstation-local --ask-vault-pass --ask-become-pass --check --diff # ansible-playbook playbook.yml -l workstation-local --ask-vault-pass --ask-become-pass --check --diff
ansible-playbook -i inventories/hosts playbook.yml -l workstation-local --ask-vault-pass --ask-become-pass --diff "$@" ansible-playbook playbook.yml -l workstation-local --ask-vault-pass --ask-become-pass --diff "$@"

View File

@@ -0,0 +1,5 @@
[ids]
0001:0001:09b4e68d
[main]
leftmeta+leftshift+f23 = rightcontrol

View File

@@ -1,96 +1,202 @@
--- ---
- name: Find common dotfiles (excluding templates) - name: Find common home dotfiles (excluding templates)
ansible.builtin.find: ansible.builtin.find:
paths: "{{ playbook_dir }}/dotfiles/common" paths: "{{ playbook_dir }}/dotfiles/common/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_files register: dotfiles_common_home_files
run_once: true run_once: true
ignore_errors: true
- name: Find group dotfiles (excluding templates) - name: Find common root dotfiles (excluding templates)
ansible.builtin.find: ansible.builtin.find:
paths: "{{ playbook_dir }}/dotfiles/{{ item }}" 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 recurse: true
file_type: file file_type: file
hidden: true hidden: true
excludes: "*.j2" excludes: "*.j2"
loop: "{{ group_names | default([]) }}" loop: "{{ group_names | default([]) }}"
delegate_to: localhost delegate_to: localhost
register: dotfiles_group_files register: dotfiles_group_home_files
run_once: true run_once: true
ignore_errors: true ignore_errors: true
- name: Deploy common dotfiles (remote) - name: Find group root dotfiles (excluding templates)
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: ansible.builtin.find:
paths: "{{ playbook_dir }}/dotfiles/common" 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_templates register: dotfiles_common_home_templates
run_once: true run_once: true
ignore_errors: true
- name: Find template files in group dotfiles - name: Find template files in common root dotfiles
ansible.builtin.find: ansible.builtin.find:
paths: "{{ playbook_dir }}/dotfiles/{{ item }}" 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 recurse: true
file_type: file file_type: file
hidden: true hidden: true
patterns: "*.j2" patterns: "*.j2"
loop: "{{ group_names | default([]) }}" loop: "{{ group_names | default([]) }}"
delegate_to: localhost delegate_to: localhost
register: dotfiles_group_templates register: dotfiles_group_home_templates
run_once: true run_once: true
ignore_errors: true ignore_errors: true
- name: Template common dotfiles - 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: ansible.builtin.template:
src: "{{ item.path }}" src: "{{ item.path }}"
dest: "{{ ansible_facts['env']['HOME'] }}/{{ item.path | replace(playbook_dir + '/dotfiles/common/', '') | replace('.j2', '') }}" dest: "{{ ansible_facts['env']['HOME'] }}/{{ item.path | replace(playbook_dir + '/dotfiles/common/home/', '') | replace('.j2', '') }}"
mode: '0600' mode: '0600'
loop: "{{ dotfiles_common_templates.files }}" loop: "{{ dotfiles_common_home_templates.files }}"
- name: Template group dotfiles - 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: ansible.builtin.template:
src: "{{ item.1.path }}" src: "{{ item.1.path }}"
dest: "{{ ansible_facts['env']['HOME'] }}/{{ item.1.path | replace(playbook_dir + '/dotfiles/' + item.0.item + '/', '') | replace('.j2', '') }}" dest: "{{ ansible_facts['env']['HOME'] }}/{{ item.1.path | replace(playbook_dir + '/dotfiles/' + item.0.item + '/home/', '') | replace('.j2', '') }}"
mode: '0600' mode: '0600'
loop: "{{ dotfiles_group_templates.results | subelements('files', skip_missing=True) }}" 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