add 'btrfs' role, move vars to host_vars
This commit is contained in:
parent
13da397c76
commit
55d37e10ac
7 changed files with 127 additions and 45 deletions
23
host_vars/lalilulelo.yml
Normal file
23
host_vars/lalilulelo.yml
Normal file
|
@ -0,0 +1,23 @@
|
|||
---
|
||||
tuned_base_profile: "network-latency"
|
||||
tuned_custom_profile:
|
||||
name: tweaks
|
||||
sections:
|
||||
- name: main
|
||||
params:
|
||||
- option: summary
|
||||
value: "Boosts RAID and iGPU speeds, managed by Ansible"
|
||||
- option: include
|
||||
value: "{{ tuned_base_profile }}"
|
||||
- name: sysctl
|
||||
params:
|
||||
- option: dev.raid.speed_limit_min
|
||||
value: "1000000"
|
||||
- option: dev.raid.speed_limit_max
|
||||
value: "9500000"
|
||||
- option: net.core.somaxconn
|
||||
value: "16384"
|
||||
- name: sysfs
|
||||
params:
|
||||
- option: /sys/class/drm/*/device/power_dpm_force_performance_level
|
||||
value: highest
|
43
host_vars/workstation.yml
Normal file
43
host_vars/workstation.yml
Normal file
|
@ -0,0 +1,43 @@
|
|||
---
|
||||
tuned_base_profile: "network-latency"
|
||||
tuned_custom_profile:
|
||||
name: tweaks
|
||||
sections:
|
||||
- name: main
|
||||
params:
|
||||
- option: summary
|
||||
value: "Ansible-managed/customized profile"
|
||||
- option: include
|
||||
value: "{{ tuned_base_profile }}"
|
||||
- name: virtsched
|
||||
params:
|
||||
- option: type
|
||||
value: "disk"
|
||||
- option: devices_udev_regex
|
||||
value: "(ID_MODEL=QEMU_HARDDISK)|(ID_VENDOR=HC)"
|
||||
- option: elevator
|
||||
value: "mq-deadline"
|
||||
- name: ssdnosched
|
||||
params:
|
||||
- option: type
|
||||
value: "disk"
|
||||
- option: devices_udev_regex
|
||||
value: "(ID_ATA_ROTATION_RATE_RPM=0)"
|
||||
- option: elevator
|
||||
value: "none"
|
||||
- name: sysctl
|
||||
params:
|
||||
# - option: net.core.default_qdisc
|
||||
# value: "fq"
|
||||
# - option: net.ipv4.tcp_congestion_control
|
||||
# value: "bbr"
|
||||
# - option: net.core.rmem_max
|
||||
# value: "4194304"
|
||||
# - option: net.core.wmem_max
|
||||
# value: "1048576"
|
||||
- option: dev.raid.speed_limit_min
|
||||
value: "600000"
|
||||
- option: dev.raid.speed_limit_max
|
||||
value: "9000000"
|
||||
- option: net.core.somaxconn
|
||||
value: "8192"
|
48
play.yml
48
play.yml
|
@ -3,57 +3,15 @@
|
|||
gather_facts: yes
|
||||
vars:
|
||||
# auto_update: "true" # would configure dnf-automatic
|
||||
hardened_ssh_port: "1181" # tcp is assumed in selinux/firewalld allowance
|
||||
# hardened_ssh_port: "1181" # tcp is assumed in selinux/firewalld allowance
|
||||
URL_PUBKEYS: "https://github.com/joshlay.keys" # https://github.com/user.keys
|
||||
tuned_base_profile: "network-latency"
|
||||
tuned_custom_profile:
|
||||
name: tweaks
|
||||
sections:
|
||||
- name: main
|
||||
params:
|
||||
- option: summary
|
||||
value: "Custom tuned profile created by jlay - virt. IO scheduler, TCP, etc"
|
||||
- option: include
|
||||
value: "{{ tuned_base_profile }}"
|
||||
- name: virtsched
|
||||
params:
|
||||
- option: type
|
||||
value: "disk"
|
||||
- option: devices_udev_regex
|
||||
value: "(ID_MODEL=QEMU_HARDDISK)|(ID_VENDOR=HC)"
|
||||
- option: elevator
|
||||
value: "mq-deadline"
|
||||
- name: ssdnosched
|
||||
params:
|
||||
- option: type
|
||||
value: "disk"
|
||||
- option: devices_udev_regex
|
||||
value: "(ID_ATA_ROTATION_RATE_RPM=0)"
|
||||
- option: elevator
|
||||
value: "none"
|
||||
- name: sysctl
|
||||
params:
|
||||
- option: net.core.default_qdisc
|
||||
value: "fq"
|
||||
- option: net.ipv4.tcp_congestion_control
|
||||
value: "bbr"
|
||||
- option: net.core.rmem_max
|
||||
value: "4194304"
|
||||
- option: net.core.wmem_max
|
||||
value: "1048576"
|
||||
- option: dev.raid.speed_limit_min
|
||||
value: "600000"
|
||||
- option: dev.raid.speed_limit_max
|
||||
value: "9000000"
|
||||
- option: net.core.somaxconn
|
||||
value: "8192"
|
||||
roles:
|
||||
# - {role: btrfs} # sets up scrubbing
|
||||
- {role: btrfs} # sets up scrubbing
|
||||
- {role: bootstrap}
|
||||
- {role: tuned}
|
||||
- {role: install-packages}
|
||||
- {role: update-packages} # depends on 'is_atomic' in bootstrap
|
||||
- {role: fedora-upgrade} # consider renaming to dist-upgrade / supporting more than fedora
|
||||
- {role: create-user}
|
||||
- {role: create-user} # this should always follow packages; they often provide groups the user may want to join
|
||||
- {role: hardening}
|
||||
- {role: docker}
|
||||
|
|
10
roles/btrfs/files/btrfs-scrub@.service
Normal file
10
roles/btrfs/files/btrfs-scrub@.service
Normal file
|
@ -0,0 +1,10 @@
|
|||
[Unit]
|
||||
Description=Btrfs scrub on %f
|
||||
ConditionPathIsMountPoint=%f
|
||||
RequiresMountsFor=%f
|
||||
|
||||
[Service]
|
||||
Nice=19
|
||||
IOSchedulingClass=idle
|
||||
KillSignal=SIGINT
|
||||
ExecStart=/usr/bin/btrfs scrub start -B %f
|
11
roles/btrfs/files/btrfs-scrub@.timer
Normal file
11
roles/btrfs/files/btrfs-scrub@.timer
Normal file
|
@ -0,0 +1,11 @@
|
|||
[Unit]
|
||||
Description=Monthly Btrfs scrub on %f
|
||||
|
||||
[Timer]
|
||||
OnCalendar=monthly
|
||||
AccuracySec=1d
|
||||
RandomizedDelaySec=1w
|
||||
Persistent=true
|
||||
|
||||
[Install]
|
||||
WantedBy=timers.target
|
5
roles/btrfs/handlers/main.yml
Normal file
5
roles/btrfs/handlers/main.yml
Normal file
|
@ -0,0 +1,5 @@
|
|||
- name: Reload systemd
|
||||
ansible.builtin.systemd:
|
||||
daemon_reload: true
|
||||
become: true
|
||||
listen: daemon_reload
|
32
roles/btrfs/tasks/main.yml
Normal file
32
roles/btrfs/tasks/main.yml
Normal file
|
@ -0,0 +1,32 @@
|
|||
- name: Setup scrub units
|
||||
ansible.builtin.copy:
|
||||
src: "{{ item }}"
|
||||
dest: /etc/systemd/system/
|
||||
mode: "0644"
|
||||
owner: root
|
||||
group: root
|
||||
with_items:
|
||||
- 'btrfs-scrub@.service'
|
||||
- 'btrfs-scrub@.timer'
|
||||
notify: daemon_reload
|
||||
become: true
|
||||
|
||||
- name: Run pending handlers
|
||||
ansible.builtin.meta: flush_handlers
|
||||
|
||||
- name: Determine btrfs mounts
|
||||
ansible.builtin.set_fact:
|
||||
btrfs_mounts: "{{ ansible_facts['mounts'] | selectattr('fstype', 'equalto', 'btrfs') | map(attribute='mount') | list }}"
|
||||
|
||||
- name: Determine systemd-friendly refs for BTRFS mount points
|
||||
ansible.builtin.command: "systemd-escape -p -- {{ item }}"
|
||||
register: sanitized_mounts
|
||||
loop: "{{ btrfs_mounts }}"
|
||||
changed_when: false
|
||||
|
||||
- name: Ensure the scrub timer is enabled for discovered BTRFS filesystems
|
||||
ansible.builtin.systemd:
|
||||
name: "btrfs-scrub@{{ item.stdout }}.timer"
|
||||
enabled: true
|
||||
with_items: "{{ sanitized_mounts.results }}"
|
||||
become: true
|
Loading…
Reference in a new issue