/
/
/
Ansible role that deployss my nas configuration. It mostly handles nfs configurations and exports that are tailored to the hardware and service configuration.
1---
2- name: Apply sysctl performance settings
3 sysctl:
4 name: "{{ item.key }}"
5 value: "{{ item.value }}"
6 state: present
7 reload: true
8 loop: "{{ nas_sysctl_settings | dict2items }}"
9 become: true
10
11- name: Set TCP congestion control algorithm
12 sysctl:
13 name: net.ipv4.tcp_congestion_control
14 value: "{{ nas_tcp_congestion_control }}"
15 state: present
16 reload: true
17 become: true
18 when: nas_tcp_congestion_control is defined
19
20- name: Enable TCP window scaling
21 sysctl:
22 name: net.ipv4.tcp_window_scaling
23 value: "1"
24 state: present
25 reload: true
26 become: true
27 when: nas_tcp_window_scaling | bool
28
29- name: Configure I/O scheduler for storage devices
30 shell: |
31 for dev in $(lsblk -nd -o NAME | grep -E '^(sd|nvme|md)'); do
32 echo mq-deadline > /sys/block/$dev/queue/scheduler 2>/dev/null || true
33 done
34 become: true
35 changed_when: false
36
37- name: Set read-ahead values for storage devices
38 shell: |
39 for dev in $(lsblk -nd -o NAME | grep -E '^(sd|nvme|md)'); do
40 blockdev --setra 4096 /dev/$dev 2>/dev/null || true
41 done
42 become: true
43 changed_when: false
44
45- name: Configure NFS performance settings
46 lineinfile:
47 path: /etc/default/nfs-kernel-server
48 regexp: '^{{ item.key }}='
49 line: "{{ item.key }}={{ item.value }}"
50 backup: true
51 loop:
52 - { key: "RPCNFSDCOUNT", value: "16" }
53 - { key: "RPCNFSDPRIORITY", value: "0" }
54 become: true
55 notify: restart nfs services
56
57