Group/host variable refactor

This commit is contained in:
Sonny Bakker 2025-03-15 00:05:30 +01:00
parent eb308670cc
commit 4b8aaf3e95
78 changed files with 445 additions and 374 deletions

View file

@ -1,24 +1,28 @@
- name: copy git configuration
template:
- name: Copy git configuration
ansible.builtin.template:
src: 'templates/gitconfig.j2'
dest: '{{ ansible_env.HOME }}/.gitconfig'
mode: '0755'
- name: copy keys
copy:
- name: Copy keys
ansible.builtin.copy:
src: '{{ item.src }}'
dest: '{{ item.dest }}'
mode: '0755'
loop:
- { src: 'files/gpg_key', dest: '{{ ansible_env.HOME }}/gpg.key' }
- { src: 'files/gpg_pub', dest: '{{ ansible_env.HOME }}/gpg.pub' }
- src: 'files/personal/gpg/gpg_key'
dest: '{{ ansible_env.HOME }}/gpg.key'
- src: 'files/personal/gpg/gpg_pub'
dest: '{{ ansible_env.HOME }}/gpg.pub'
- name: import secret key
command: 'gpg --passphrase {{ gpg_passphrase }} --import ~/gpg.key'
- name: Import secret key
ansible.builtin.command: 'gpg --passphrase {{ gpg_passphrase }} --import ~/gpg.key'
- name: import public key
command: 'gpg --import ~/gpg.pub'
- name: Import public key
ansible.builtin.command: 'gpg --import ~/gpg.pub'
- name: remove temp keys
file:
- name: Remove temp keys
ansible.builtin.file:
path: '{{ item }}'
state: absent
loop:

View file

@ -1,20 +0,0 @@
- name: create configuration directory
file:
path: '{{ ansible_env.HOME }}/.config/mpv'
state: directory
mode: '0700'
- name: copy configuration files
template:
src: '{{ item.src }}'
dest: '{{ item.dest }}'
mode: '0644'
loop:
- {
src: 'templates/mpv/input.j2',
dest: '{{ ansible_env.HOME }}/.config/mpv/input.conf',
}
- {
src: 'templates/mpv/config.j2',
dest: '{{ ansible_env.HOME }}/.config/mpv/mpv.conf',
}

View file

@ -3,67 +3,25 @@
# using `wg set wg0 peer izHzmRwh2yzICps6pFI2Bg3TnmTD66/8uH4loJpkuD4= endpoint <NEW-IP>:<PORT>`
# for example.
- name: Create Wireguard directories
- name: Copy firewall template
become: true
ansible.builtin.file:
path: '{{ item }}'
ansible.builtin.template:
src: "{{ lookup('ansible.builtin.first_found', paths) }}"
dest: '/etc/nftables.conf'
owner: root
group: systemd-network
mode: '0750'
state: directory
recurse: true
loop:
- '{{ vpn_config_dir }}'
- '{{ vpn_default.private_key_path | dirname }}'
- '{{ vpn_default.public_key_path | dirname }}'
- '{{ vpn_media.private_key_path | dirname }}'
- '{{ vpn_media.public_key_path | dirname }}'
notify:
- restart systemd-networkd
- restart systemd-resolved
- name: Copy Wireguard credentials
become: true
ansible.builtin.copy:
src: '{{ item.src }}'
dest: '{{ item.dest }}'
owner: root
group: systemd-network
mode: '0640'
loop:
- dest: '{{ vpn_default.public_key_path }}'
src: 'files/{{ platform }}/wireguard/default/{{ platform }}.pub'
- dest: '{{ vpn_default.private_key_path }}'
src: 'files/{{ platform }}/wireguard/default/{{ platform }}.key'
- dest: '{{ vpn_media.public_key_path }}'
src: 'files/{{ platform }}/wireguard/media/{{ platform }}.pub'
- dest: '{{ vpn_media.private_key_path }}'
src: 'files/{{ platform }}/wireguard/media/{{ platform }}.key'
notify:
- restart systemd-networkd
- restart systemd-resolved
- name: Copy Wireguard preshared keys
become: true
ansible.builtin.copy:
src: '{{ item.preshared_key_source_path }}'
dest: '{{ item.preshared_key_path }}'
owner: root
group: systemd-network
mode: '0640'
loop: '{{ vpn_default.peers + vpn_media.peers }}'
notify:
- restart systemd-networkd
- restart systemd-resolved
group: root
mode: '0600'
vars:
paths:
- 'templates/{{ ansible_hostname }}/nftables.j2'
- 'templates/{{ group_names[0] }}/{{ ansible_hostname }}/nftables.j2'
notify: restart nftables
- name: Desktop configuration
notify:
- restart systemd-networkd
- restart systemd-resolved
when: platform == "desktop"
when: ansible_hostname == 'desktop'
block:
- name: Setup network configuration
become: true
@ -74,21 +32,9 @@
group: systemd-network
mode: '0640'
loop:
- src: 'templates/desktop/network/enp.network.j2'
- src: 'templates/personal/desktop/network/enp.network.j2'
dest: '/etc/systemd/network/20-wired.network'
- src: 'templates/desktop/network/wg0.network.j2'
dest: '/etc/systemd/network/40-wg0.network'
- src: 'templates/desktop/network/wg0.netdev.j2'
dest: '/etc/systemd/network/40-wg0.netdev'
- src: 'templates/desktop/network/wg1.network.j2'
dest: '/etc/systemd/network/40-wg1.network'
- src: 'templates/desktop/network/wg1.netdev.j2'
dest: '/etc/systemd/network/40-wg1.netdev'
- name: Remove leftover configuration files
become: true
ansible.builtin.file:
@ -98,12 +44,12 @@
- '/etc/systemd/network/30-vmbr0.network'
- '/etc/systemd/network/30-vmbr0.netdev'
- name: Laptop configuration
- name: XPS configuration
notify:
- restart systemd-networkd
- restart systemd-resolved
- restart iwd
when: platform == "laptop"
when: ansible_hostname == 'xps'
block:
- name: Setup network configuration
become: true
@ -114,21 +60,9 @@
group: systemd-network
mode: '0640'
loop:
- src: 'templates/laptop/network/wireless.network.j2'
- src: 'templates/personal/xps/network/wireless.network.j2'
dest: '/etc/systemd/network/20-wireless.network'
- src: 'templates/laptop/network/wg0.network.j2'
dest: '/etc/systemd/network/40-wg0.network'
- src: 'templates/laptop/network/wg0.netdev.j2'
dest: '/etc/systemd/network/40-wg0.netdev'
- src: 'templates/laptop/network/wg1.network.j2'
dest: '/etc/systemd/network/40-wg1.network'
- src: 'templates/laptop/network/wg1.netdev.j2'
dest: '/etc/systemd/network/40-wg1.netdev'
- name: Remove leftover configuration files
become: true
ansible.builtin.file:
@ -137,13 +71,3 @@
loop:
- '/etc/systemd/network/30-vmbr0.network'
- '/etc/systemd/network/30-vmbr0.netdev'
- name: Copy firewall template
become: true
ansible.builtin.template:
src: 'templates/{{ platform }}/nftables.j2'
dest: '/etc/nftables.conf'
owner: root
group: root
mode: '0600'
notify: restart nftables

View file

@ -1,10 +1,12 @@
- name: Create xdg-desktop-portal.service.d directory
file:
ansible.builtin.file:
path: '{{ xdg_config_dir }}/systemd/user/xdg-desktop-portal.service.d'
state: directory
mode: '0755'
- name: Copy xdg-desktop-portal.service drop-in
template:
src: templates/desktop/xdg-desktop-portal.service.j2
ansible.builtin.template:
src: templates/personal/desktop/xdg-desktop-portal.service.j2
dest: '{{ xdg_config_dir }}/systemd/user/xdg-desktop-portal.service.d/override.conf'
mode: '0755'
notify: user daemon-reload

View file

@ -4,10 +4,10 @@
dest: '{{ item.dest }}'
mode: '0644'
loop:
- src: 'templates/mpd/service.j2'
- src: 'templates/personal/mpd/service.j2'
dest: '{{ xdg_config_dir }}/systemd/user/mpd.service'
- src: 'templates/mpd/socket.j2'
- src: 'templates/personal/mpd/socket.j2'
dest: '{{ xdg_config_dir }}/systemd/user/mpd.socket'
notify:
- stop mpd service
@ -34,6 +34,7 @@
ansible.builtin.file:
path: '{{ item.path }}'
state: '{{ item.state }}'
mode: '0755'
loop:
- path: '{{ mpd_configuration_dir }}/log'
state: 'absent'
@ -50,11 +51,11 @@
dest: '{{ item.dest }}'
mode: '0755'
loop:
- src: 'templates/mpd/mpd.conf.j2'
- src: 'templates/personal/mpd/mpd.conf.j2'
dest: '{{ mpd_configuration_dir }}/mpd.conf'
- src: 'templates/mpd/ncmpcpp/config.j2'
- src: 'templates/personal/mpd/ncmpcpp/config.j2'
dest: '{{ ncmpcpp_configuration_dir }}/config'
- src: 'templates/mpd/ncmpcpp/bindings.j2'
- src: 'templates/personal/mpd/ncmpcpp/bindings.j2'
dest: '{{ ncmpcpp_configuration_dir }}/bindings'
notify:
- stop mpd service

16
tasks/personal/mpv.yml Normal file
View file

@ -0,0 +1,16 @@
- name: Create configuration directory
ansible.builtin.file:
path: '{{ ansible_env.HOME }}/.config/mpv'
state: directory
mode: '0700'
- name: Copy configuration files
ansible.builtin.template:
src: '{{ item.src }}'
dest: '{{ item.dest }}'
mode: '0644'
loop:
- src: 'templates/personal/mpv/input.j2'
dest: '{{ ansible_env.HOME }}/.config/mpv/input.conf'
- src: 'templates/personal/mpv/config.j2'
dest: '{{ ansible_env.HOME }}/.config/mpv/mpv.conf'

View file

@ -0,0 +1,112 @@
# Note: Only compatible with personal group
- name: Create Wireguard directories
become: true
ansible.builtin.file:
path: '{{ item }}'
owner: root
group: systemd-network
mode: '0750'
state: directory
recurse: true
loop:
- '{{ vpn_config_dir }}'
- '{{ vpn_default.private_key_path | dirname }}'
- '{{ vpn_default.public_key_path | dirname }}'
- '{{ vpn_media.private_key_path | dirname }}'
- '{{ vpn_media.public_key_path | dirname }}'
notify:
- restart systemd-networkd
- restart systemd-resolved
- name: Copy Wireguard credentials
become: true
ansible.builtin.copy:
src: '{{ item.src }}'
dest: '{{ item.dest }}'
owner: root
group: systemd-network
mode: '0640'
loop:
- dest: '{{ vpn_default.public_key_path }}'
src: 'files/personal/{{ ansible_hostname }}/wireguard/default/{{ ansible_hostname }}.pub'
- dest: '{{ vpn_default.private_key_path }}'
src: 'files/personal/{{ ansible_hostname }}/wireguard/default/{{ ansible_hostname }}.key'
- dest: '{{ vpn_media.public_key_path }}'
src: 'files/personal/{{ ansible_hostname }}/wireguard/media/{{ ansible_hostname }}.pub'
- dest: '{{ vpn_media.private_key_path }}'
src: 'files/personal/{{ ansible_hostname }}/wireguard/media/{{ ansible_hostname }}.key'
notify:
- restart systemd-networkd
- restart systemd-resolved
- name: Copy Wireguard preshared keys
become: true
ansible.builtin.copy:
src: '{{ item.preshared_key_source_path }}'
dest: '{{ item.preshared_key_path }}'
owner: root
group: systemd-network
mode: '0640'
loop: '{{ vpn_default.peers + vpn_media.peers }}'
notify:
- restart systemd-networkd
- restart systemd-resolved
- name: Desktop configuration
notify:
- restart systemd-networkd
- restart systemd-resolved
when: ansible_hostname == 'desktop'
block:
- name: Setup network configuration
become: true
ansible.builtin.template:
src: '{{ item.src }}'
dest: '{{ item.dest }}'
owner: root
group: systemd-network
mode: '0640'
loop:
- src: 'templates/personal/desktop/network/wg0.network.j2'
dest: '/etc/systemd/network/40-wg0.network'
- src: 'templates/personal/desktop/network/wg0.netdev.j2'
dest: '/etc/systemd/network/40-wg0.netdev'
- src: 'templates/personal/desktop/network/wg1.network.j2'
dest: '/etc/systemd/network/40-wg1.network'
- src: 'templates/personal/desktop/network/wg1.netdev.j2'
dest: '/etc/systemd/network/40-wg1.netdev'
- name: XPS configuration
notify:
- restart systemd-networkd
- restart systemd-resolved
- restart iwd
when: ansible_hostname == 'xps'
block:
- name: Setup network configuration
become: true
ansible.builtin.template:
src: '{{ item.src }}'
dest: '{{ item.dest }}'
owner: root
group: systemd-network
mode: '0640'
loop:
- src: 'templates/personal/xps/network/wg0.network.j2'
dest: '/etc/systemd/network/40-wg0.network'
- src: 'templates/personal/xps/network/wg0.netdev.j2'
dest: '/etc/systemd/network/40-wg0.netdev'
- src: 'templates/personal/xps/network/wg1.network.j2'
dest: '/etc/systemd/network/40-wg1.network'
- src: 'templates/personal/xps/network/wg1.netdev.j2'
dest: '/etc/systemd/network/40-wg1.netdev'

View file

@ -1,7 +1,7 @@
- name: Provision powertop systemd service
become: true
ansible.builtin.template:
src: 'templates/laptop/powertop.service.j2'
src: 'templates/personal/xps/powertop.service.j2'
dest: '/etc/systemd/system/powertop.service'
owner: root
group: root

View file

@ -1,166 +1,183 @@
- name: copy reflector configuration
- name: Provision pollkit administrator configuration
become: true
template:
ansible.builtin.template:
src: 'templates/polkit.j2'
dest: '/etc/polkit-1/rules.d/49-nopasswd_global.rules'
mode: '0755'
- name: Install shared packages
become: true
community.general.pacman:
name: '{{ packages }}'
- name: Copy reflector configuration
become: true
ansible.builtin.template:
src: 'templates/reflector.j2'
dest: '/etc/xdg/reflector/reflector.conf'
owner: root
group: root
mode: '0600'
# started by weekly timer
- name: disable reflector
- name: Disable reflector
become: true
systemd:
ansible.builtin.systemd:
name: reflector
state: stopped
enabled: false
- name: copy pacman configuration
- name: Copy pacman configuration
become: true
template:
ansible.builtin.template:
src: 'templates/pacman.j2'
dest: '/etc/pacman.conf'
owner: root
group: root
mode: '0644'
- name: create extra conf
- name: Create extra conf
become: true
file:
ansible.builtin.file:
path: '/etc/pacman.d/extra.conf'
owner: root
group: root
state: touch
mode: '0644'
- name: create wezterm configuration dir
file:
- name: Create wezterm configuration dir
ansible.builtin.file:
path: '{{ xdg_config_dir }}/wezterm/includes'
state: directory
mode: '0755'
- name: copy wezterm configuration files
template:
- name: Copy wezterm configuration files
ansible.builtin.template:
src: '{{ item.src }}'
dest: '{{ item.dest }}'
mode: '0755'
loop:
- {
src: 'templates/wezterm/wezterm.lua.j2',
dest: '{{ xdg_config_dir }}/wezterm/wezterm.lua'
}
- {
src: 'templates/wezterm/includes/colors.lua.j2',
dest: '{{ xdg_config_dir }}/wezterm/includes/colors.lua'
}
- {
src: 'templates/wezterm/includes/fonts.lua.j2',
dest: '{{ xdg_config_dir }}/wezterm/includes/fonts.lua'
}
- {
src: 'templates/wezterm/includes/window.lua.j2',
dest: '{{ xdg_config_dir }}/wezterm/includes/window.lua'
}
- src: 'templates/wezterm/wezterm.lua.j2'
dest: '{{ xdg_config_dir }}/wezterm/wezterm.lua'
- name: enable fstrim timer
- src: 'templates/wezterm/includes/colors.lua.j2'
dest: '{{ xdg_config_dir }}/wezterm/includes/colors.lua'
- src: 'templates/wezterm/includes/fonts.lua.j2'
dest: '{{ xdg_config_dir }}/wezterm/includes/fonts.lua'
- src: 'templates/wezterm/includes/window.lua.j2'
dest: '{{ xdg_config_dir }}/wezterm/includes/window.lua'
- name: Enable fstrim timer
become: true
systemd:
ansible.builtin.systemd:
name: fstrim.timer
enabled: true
- name: remove the sysctl.d directory
- name: Remove the sysctl.d directory
become: true
file:
ansible.builtin.file:
path: /etc/sysctl.d
state: absent
- name: recreate the sysctl.d directory
- name: Recreate the sysctl.d directory
become: true
file:
ansible.builtin.file:
path: /etc/sysctl.d
state: directory
mode: 755
mode: '0755'
- name: copy sysctl files
- name: Copy sysctl files
become: true
template:
when: "'personal' not in group_names"
ansible.builtin.template:
src: '{{ item.src }}'
dest: '{{ item.dest }}'
mode: '0755'
loop:
- {
src: 'templates/{{ platform }}/sysctl/99-sysrq.conf.j2',
dest: '/etc/sysctl.d/99-sysrq.conf'
}
- {
src: 'templates/{{ platform }}/sysctl/98-forward.conf.j2',
dest: '/etc/sysctl.d/98-foward.conf'
}
- src: 'templates/sysctl/99-sysrq.conf.j2'
dest: '/etc/sysctl.d/99-sysrq.conf'
- src: 'templates/sysctl/98-forward.conf.j2'
dest: '/etc/sysctl.d/98-foward.conf'
notify: reload sysctl configuration
- name: remove the modprobe.d directory
- name: Remove the modprobe.d directory
become: true
file:
ansible.builtin.file:
path: /etc/modprobe.d
state: absent
- name: recreate the modprobe.d directory
- name: Recreate the modprobe.d directory
become: true
file:
ansible.builtin.file:
path: /etc/modprobe.d
state: directory
mode: 755
mode: '0755'
- name: copy modprobe configuration files
- name: Copy modprobe configuration files
become: true
template:
ansible.builtin.template:
src: '{{ item.src }}'
dest: '{{ item.dest }}'
mode: '0755'
loop: '{{ modprobe_templates }}'
when: modprobe_templates
- name: copy kernel parameters template
- name: Copy kernel parameters template
become: true
template:
src: 'templates/{{ platform }}/cmdline.j2'
when: "'personal' not in group_names"
ansible.builtin.template:
src: 'templates/{{ ansible_hostname }}/cmdline.j2'
dest: '/etc/kernel/cmdline'
mode: '0755'
- name: remove the mkinitcpio directories
- name: Copy kernel parameters template for personal group
become: true
file:
when: "'personal' in group_names"
ansible.builtin.template:
src: 'templates/personal/{{ ansible_hostname }}/cmdline.j2'
dest: '/etc/kernel/cmdline'
mode: '0755'
- name: Remove the mkinitcpio directories
become: true
ansible.builtin.file:
path: '{{ item }}'
state: absent
loop:
- /etc/mkinitcpio.conf.d
- /etc/mkinitcpio.d
- name: recreate the mkinitcpio directories
- name: Recreate the mkinitcpio directories
become: true
file:
ansible.builtin.file:
path: '{{ item }}'
state: directory
mode: 755
mode: '0755'
loop:
- /etc/mkinitcpio.conf.d
- /etc/mkinitcpio.d
- name: copy mkinitcpio configuration files
- name: Copy mkinitcpio configuration files
become: true
template:
ansible.builtin.template:
src: '{{ item.src }}'
dest: '{{ item.dest }}'
mode: '0755'
loop: '{{ mkinitcpio_templates }}'
when: mkinitcpio_templates
- name: regenerate initramfs images
- name: Regenerate initramfs images
become: true
command: 'mkinitcpio --allpresets'
ansible.builtin.command: 'mkinitcpio --allpresets'
register: mkinitcpio_stats
- name: log mkinitcpio stdout
debug:
- name: Log mkinitcpio stdout
ansible.builtin.debug:
var: mkinitcpio_stats.stdout_lines
- name: create a Linux UEFI boot entry
- name: Create a Linux UEFI boot entry
become: true
command: efibootmgr \
ansible.builtin.command: efibootmgr \
--create \
--disk '{{ boot_configuration.disk }}' \
--part '{{ boot_configuration.partition }}' \
@ -171,14 +188,14 @@
register: efi_linux_stats
when: register_uefi_entries
- name: log efibootmgr stdout
debug:
- name: Log efibootmgr stdout
ansible.builtin.debug:
var: efi_linux_stats.stdout_lines
when: register_uefi_entries
- name: create a Linux LTS UEFI boot entry
- name: Create a Linux LTS UEFI boot entry
become: true
command: efibootmgr \
ansible.builtin.command: efibootmgr \
--create \
--disk '{{ boot_configuration.disk }}' \
--part '{{ boot_configuration.partition }}' \
@ -189,7 +206,7 @@
register: efi_linux_lts_stats
when: register_uefi_entries
- name: log efibootmgr LTS stdout
debug:
- name: Log efibootmgr LTS stdout
ansible.builtin.debug:
var: efi_linux_lts_stats.stdout_lines
when: register_uefi_entries

View file

@ -1,18 +1,18 @@
- name: setup systemd user service folder
file:
- name: Setup systemd user service folder
ansible.builtin.file:
path: '{{ xdg_config_dir }}/systemd/user'
state: directory
mode: '0755'
- name: add ssh-agent service
template:
- name: Add ssh-agent service
ansible.builtin.template:
src: 'templates/ssh-agent.j2'
dest: '{{ xdg_config_dir }}/systemd/user/ssh-agent.service'
mode: '0644'
notify: restart user ssh-agent
- name: copy tmux service
template:
- name: Copy tmux service
ansible.builtin.template:
src: 'templates/tmux.j2'
dest: '{{ xdg_config_dir }}/systemd/user/tmux.service'
mode: '0644'
@ -20,8 +20,8 @@
- user daemon-reload
- restart tmux service
- name: copy tmux startup script
copy:
- name: Copy tmux startup script
ansible.builtin.copy:
src: 'files/tmux_start'
dest: '{{ ansible_env.HOME }}/.local/bin/tmux_start'
mode: '0740'