network/config/net/cluster.nix

172 lines
5.1 KiB
Nix

{ lib, ... }:
let
cephMonServers = [ "server5" "server6" "server8" ];
in
{
site.net.cluster = {
ipv6Router = "cls-gw";
domainName = "cluster.zentralwerk.org";
extraRecords = map (host: {
data = "1 1 6789 ${host}";
name = "_ceph-mon._tcp";
type = "SRV";
}) cephMonServers
++
lib.lists.imap0 (i: host: {
name = "mon${toString i}";
type = "CNAME";
data = "${host}";
}) cephMonServers;
hosts4 = {
cls-gw = "172.20.77.1";
server1 = "172.20.77.30";
server2 = "172.20.77.2";
server3 = "172.20.77.3";
server4 = "172.20.77.4";
server5 = "172.20.77.5";
server6 = "172.20.77.6";
server7 = "172.20.77.7";
server8 = "172.20.77.8";
server9 = "172.20.77.9";
server10 = "172.20.77.10";
server11 = "172.20.77.11";
server12 = "172.20.77.12";
server13 = "172.20.77.13";
server14 = "172.20.77.14";
server15 = "172.20.77.15";
server16 = "172.20.77.16";
server17 = "172.20.77.17";
server18 = "172.20.77.18";
server19 = "172.20.77.19";
server20 = "172.20.77.20";
server21 = "172.20.77.21";
server22 = "172.20.77.22";
server23 = "172.20.77.23";
server24 = "172.20.77.24";
server25 = "172.20.77.25";
server26 = "172.20.77.26";
server27 = "172.20.77.27";
server28 = "172.20.77.28";
server29 = "172.20.77.29";
};
hosts6 = {
dn42 = {
cls-gw = "fd23:42:c3d2:586::1";
server1 = "fd23:42:c3d2:586::11";
server2 = "fd23:42:c3d2:586::12";
server3 = "fd23:42:c3d2:586::13";
server4 = "fd23:42:c3d2:586::14";
server5 = "fd23:42:c3d2:586::15";
server6 = "fd23:42:c3d2:586::16";
server7 = "fd23:42:c3d2:586::17";
server8 = "fd23:42:c3d2:586::18";
server9 = "fd23:42:c3d2:586::19";
server10 = "fd23:42:c3d2:586::1a";
server11 = "fd23:42:c3d2:586::1b";
server12 = "fd23:42:c3d2:586::1c";
server13 = "fd23:42:c3d2:586::1d";
server14 = "fd23:42:c3d2:586::1e";
server15 = "fd23:42:c3d2:586::1f";
server16 = "fd23:42:c3d2:586::20";
server17 = "fd23:42:c3d2:586::21";
server18 = "fd23:42:c3d2:586::22";
server19 = "fd23:42:c3d2:586::23";
server20 = "fd23:42:c3d2:586::24";
server21 = "fd23:42:c3d2:586::25";
server22 = "fd23:42:c3d2:586::26";
server23 = "fd23:42:c3d2:586::27";
server24 = "fd23:42:c3d2:586::28";
server25 = "fd23:42:c3d2:586::29";
server26 = "fd23:42:c3d2:586::2a";
server27 = "fd23:42:c3d2:586::2b";
server28 = "fd23:42:c3d2:586::2c";
server29 = "fd23:42:c3d2:586::2d";
};
up4 = {
cls-gw = "2a00:8180:2c00:284::1";
server1 = "2a00:8180:2c00:284::11";
server2 = "2a00:8180:2c00:284::12";
server3 = "2a00:8180:2c00:284::13";
server4 = "2a00:8180:2c00:284::14";
server5 = "2a00:8180:2c00:284::15";
server6 = "2a00:8180:2c00:284::16";
server7 = "2a00:8180:2c00:284::17";
server8 = "2a00:8180:2c00:284::18";
server9 = "2a00:8180:2c00:284::19";
server10 = "2a00:8180:2c00:284::1a";
server11 = "2a00:8180:2c00:284::1b";
server12 = "2a00:8180:2c00:284::1c";
server13 = "2a00:8180:2c00:284::1d";
server14 = "2a00:8180:2c00:284::1e";
server15 = "2a00:8180:2c00:284::1f";
server16 = "2a00:8180:2c00:284::20";
server17 = "2a00:8180:2c00:284::21";
server18 = "2a00:8180:2c00:284::22";
server19 = "2a00:8180:2c00:284::23";
server20 = "2a00:8180:2c00:284::24";
server21 = "2a00:8180:2c00:284::25";
server22 = "2a00:8180:2c00:284::26";
server23 = "2a00:8180:2c00:284::27";
server24 = "2a00:8180:2c00:284::28";
server25 = "2a00:8180:2c00:284::29";
server26 = "2a00:8180:2c00:284::2a";
server27 = "2a00:8180:2c00:284::2b";
server28 = "2a00:8180:2c00:284::2c";
server29 = "2a00:8180:2c00:284::2d";
};
};
subnet4 = "172.20.77.0/27";
subnets6 = {
dn42 = "fd23:42:c3d2:586::/64";
up4 = "2a00:8180:2c00:284::/64";
};
};
site.hosts =
let
makeServer = {
role = "client";
model = "nixos";
interfaces = builtins.foldl' (interfaces: net:
interfaces // {
"${net}".type = "bridge";
}
) {} [
"cluster"
"core"
"mgmt"
"serv"
"c3d2"
"pub"
"priv23"
"priv31"
"priv45"
"bmx"
"flpk"
];
};
in {
cls-gw = {
role = "container";
interfaces = {
cluster = {
hwaddr = "0A:14:48:01:06:02";
type = "veth";
};
core = {
hwaddr = "0A:14:48:01:06:03";
type = "veth";
};
};
ospf.allowedUpstreams = [ "upstream4" "upstream3" "anon1" "freifunk" ];
};
server3 = makeServer;
server5 = makeServer;
server6 = makeServer;
server7 = makeServer;
server8 = makeServer;
server9 = makeServer;
server10 = makeServer;
};
}