File tree Expand file tree Collapse file tree 4 files changed +97
-1
lines changed
nixos-configurations/core-master Expand file tree Collapse file tree 4 files changed +97
-1
lines changed Original file line number Diff line number Diff line change 1010 services . rsyslogd . enable = true ;
1111 services . signs . enable = true ;
1212 services . monitoring . enable = true ;
13+ services . mrtg . enable = true ;
1314 services . prometheus . enable = true ;
1415 services . ssh . enable = true ;
1516 services . wasgeht . enable = true ;
Original file line number Diff line number Diff line change @@ -7,7 +7,6 @@ inputs: {
77 ./facts.nix
88 ./libvirt.nix
99 ./time.nix
10-
1110 ./services
1211 ./users
1312 ] ;
Original file line number Diff line number Diff line change 66 ./gitlab.nix
77 ./kea-master.nix
88 ./monitoring.nix
9+ ./mrtg.nix
910 ./ntp.nix
1011 ./prometheus.nix
1112 ./rsyslogd.nix
Original file line number Diff line number Diff line change 1+ {
2+ config ,
3+ pkgs ,
4+ lib ,
5+ ...
6+ } :
7+ let
8+
9+ cfg = config . scale-network . services . mrtg ;
10+
11+ inherit ( lib )
12+ types
13+ ;
14+
15+ inherit ( lib . modules )
16+ mkIf
17+ ;
18+
19+ inherit ( lib . options )
20+ mkEnableOption
21+ mkOption
22+ ;
23+ in
24+
25+ {
26+
27+ options . scale-network . services . mrtg = {
28+
29+ enable = mkEnableOption "SCaLE mrtg monitoring service" ;
30+
31+ user = mkOption {
32+ type = types . str ;
33+ default = "mrtg" ;
34+ } ;
35+
36+ group = mkOption {
37+ type = types . str ;
38+ default = "mrtg" ;
39+ } ;
40+
41+ statePath = mkOption {
42+ type = types . str ;
43+ default = "/persist/var/lib/mrtg" ;
44+ } ;
45+ } ;
46+
47+ config = mkIf cfg . enable {
48+ systemd . services . mrtg-generator =
49+ let
50+ unfilteredList = (
51+ builtins . split "\n " (
52+ builtins . readFile "${ pkgs . scale-network . scaleInventory } /config/all-network-devices"
53+ )
54+ ) ;
55+ filteredList = ( builtins . filter ( line : line != [ ] && line != "" ) unfilteredList ) ;
56+ script = pkgs . writeShellScript "" ''
57+ set -x
58+ mkdir -p ${ cfg . statePath } /configs
59+ mkdir -p ${ cfg . statePath } /graphs
60+ for hostname in ${ toString filteredList } ; do
61+ echo "'' ${hostname}"
62+ ${ pkgs . mrtg } /bin/cfgmaker \
63+ --enable-ipv6 \
64+ --no-down \
65+ --show-op-down \
66+ --output="${ cfg . statePath } /configs/'' ${hostname}.cfg" \
67+ --global="WorkDir: ${ cfg . statePath } /graphs/'' ${hostname}/" \
68+ Junitux@'' ${hostname}
69+ done
70+ '' ;
71+ in
72+ {
73+ description = "mrtg generator" ;
74+ after = [ "network.target" ] ;
75+ wantedBy = [ "multi-user.target" ] ;
76+ serviceConfig = {
77+ User = "${ cfg . user } " ;
78+ Group = "${ cfg . group } " ;
79+ ExecStart = "${ script } " ;
80+ Type = "simple" ;
81+ } ;
82+ } ;
83+ systemd . tmpfiles . rules = [
84+ "d ${ cfg . statePath } 0755 ${ cfg . user } ${ cfg . group } "
85+ ] ;
86+
87+ users = {
88+ users . "${ cfg . user } " = {
89+ isNormalUser = true ;
90+ group = "${ cfg . group } " ;
91+ } ;
92+ groups . ${ cfg . group } = { } ;
93+ } ;
94+ } ;
95+ }
You can’t perform that action at this time.
0 commit comments