/
/
/
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# NAS Role Default Configuration
3
4# NFS Server Configuration
5nas_nfs_enabled: true
6nas_nfs_exports: []
7 # Example export configuration for your network:
8 # - path: "/mnt/rstorage/shared"
9 # clients: "192.168.34.0/24"
10 # options: "rw,sync,no_subtree_check,no_root_squash"
11 # - path: "/mnt/rstorage/media"
12 # clients: "192.168.34.0/24"
13 # options: "ro,sync,no_subtree_check"
14 # - path: "/mnt/rstorage/backups"
15 # clients: "192.168.34.64(rw,sync) 192.168.34.94(rw,sync)" # Specific hosts
16 # options: "no_subtree_check"
17
18# Runner Services NFS Exports (automatically added when runner services are enabled)
19nas_runner_exports:
20 - path: "/mnt/rstorage/cctv-data"
21 name: "frigate-data"
22 description: "Frigate CCTV video storage"
23 clients: "{{ runner_host_ip | default(vault_storage.lan_subnet) }}"
24 options: "rw,async,no_subtree_check,no_root_squash,secure"
25 - path: "/mnt/rstorage/media/pictures"
26 name: "immich-photos"
27 description: "Immich photo library storage"
28 clients: "{{ runner_host_ip | default(vault_storage.lan_subnet) }}"
29 options: "rw,async,no_subtree_check,no_root_squash,secure"
30 - path: "/mnt/rstorage/code-repo"
31 name: "forgejo-repos"
32 description: "Forgejo Git repositories"
33 clients: "{{ runner_host_ip | default(vault_storage.lan_subnet) }}"
34 options: "rw,async,no_subtree_check,no_root_squash,secure"
35 - path: "/mnt/rstorage/registry-data"
36 name: "harbor-registry"
37 description: "Harbor container registry data"
38 clients: "{{ runner_host_ip | default(vault_storage.lan_subnet) }}"
39 options: "rw,async,no_subtree_check,no_root_squash,secure"
40 - path: "/mnt/rstorage/cvat-datasets"
41 name: "cvat-datasets"
42 description: "Cvat datasets"
43 clients: "{{ runner_host_ip | default(vault_storage.lan_subnet) }}"
44 options: "rw,async,no_subtree_check,no_root_squash,secure"
45 - path: "/mnt/rstorage/media/dnd"
46 name: "dnd-media"
47 description: "D&D session agent: ambience, effects, recordings, campaign"
48 clients: "{{ runner_host_ip | default(vault_storage.lan_subnet) }}"
49 options: "rw,async,no_subtree_check,no_root_squash,secure"
50
51# RAID Configuration - Manual Management
52# Note: RAID arrays assumed to be manually configured and mounted
53nas_raid_enabled: false # Disable automatic RAID management
54nas_raid_monitoring: true # Keep monitoring enabled
55nas_mdadm_config_file: "/etc/mdadm/mdadm.conf"
56
57# Storage Configuration
58nas_storage_base: "/mnt/rstorage" # Base mount point for manual RAID5
59
60# Docker / Storage Mount Boot Ordering
61# Ensures docker.service starts only after nas_storage_base is mounted, so
62# containers bind-mounting the array can never latch onto the empty pre-mount
63# directory on the root filesystem when mdadm assembly is delayed (e.g. after
64# an unclean shutdown). Skipped automatically on hosts without Docker.
65nas_docker_mount_ordering_enabled: true
66nas_docker_mount_ordering_dropin: "wait-for-storage-mount.conf"
67
68# Network Configuration
69# Note: Bonding is managed externally via netplan (4x 2.5G interfaces -> bond0 -> br0)
70nas_network_bonding_enabled: false # Managed by netplan, not this role
71nas_network_interface: "br0" # Your bridge interface
72nas_network_ip: "192.168.34.200"
73nas_network_subnet: "192.168.34.0/24"
74
75# Storage Subdirectories (created under nas_storage_base)
76nas_storage_directories: []
77 # Example subdirectories:
78 # - "/mnt/rstorage/shared"
79 # - "/mnt/rstorage/media"
80 # - "/mnt/rstorage/backups"
81
82# Performance Tuning
83nas_performance_tuning_enabled: true
84nas_tcp_window_scaling: true
85nas_tcp_congestion_control: "bbr"
86nas_sysctl_settings:
87 # Network performance
88 net.core.rmem_default: 262144
89 net.core.rmem_max: 16777216
90 net.core.wmem_default: 262144
91 net.core.wmem_max: 16777216
92 net.ipv4.tcp_rmem: "4096 87380 16777216"
93 net.ipv4.tcp_wmem: "4096 65536 16777216"
94 net.core.netdev_max_backlog: 5000
95 # Filesystem performance
96 vm.dirty_background_ratio: 5
97 vm.dirty_ratio: 10
98 vm.vfs_cache_pressure: 50
99
100# Service Configuration
101nas_services:
102 - nfs-kernel-server
103 - rpcbind
104
105# Package Installation
106nas_install_packages:
107 - nfs-kernel-server
108 - nfs-common
109 - mdadm
110 - smartmontools
111 - hdparm
112 - iotop
113 - htop
114
115# Monitoring and Alerting
116nas_monitoring_enabled: true
117nas_smartmontools_enabled: true
118nas_email_notifications: "" # Email address for RAID alerts
119
120# Security Settings
121nas_nfs_secure_ports: true
122
123# Runner Services Integration
124nas_enable_runner_exports: false # Enable when deploying runner services
125
126# Backup Integration
127nas_backup_integration: false
128nas_backup_paths: []
129 # Example backup paths:
130 # - "/mnt/rstorage/critical"
131 # - "/etc/exports"
132 # - "/etc/mdadm/mdadm.conf"
133
134# Logging
135nas_log_level: "info"
136nas_log_file: "/var/log/nas-role.log"
137