NixOS configuration for HPC cluster
https://docs.hpc.informatik.hs-fulda.de/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
97 lines
2.3 KiB
97 lines
2.3 KiB
{ pkgs, lib, config, nodes, ... }:
|
|
|
|
with lib;
|
|
|
|
let
|
|
mkReservations = net: concatLists (mapAttrsToList
|
|
(_: node: optional (hasAttr net node.config.hpc.dhcp.reservations) {
|
|
"hw-address" = node.config.hpc.dhcp.reservations.${net}.hwAddress;
|
|
"ip-address" = node.config.hpc.dhcp.reservations.${net}.ipAddress;
|
|
})
|
|
nodes);
|
|
|
|
in
|
|
{
|
|
services.kea = {
|
|
dhcp4 = {
|
|
enable = true;
|
|
settings = {
|
|
"valid-lifetime" = 4000;
|
|
"renew-timer" = 1000;
|
|
"rebind-timer" = 2000;
|
|
|
|
"interfaces-config" = {
|
|
"interfaces" = [ "mngt" "data" ];
|
|
};
|
|
|
|
"lease-database" = {
|
|
"type" = "memfile";
|
|
"persist" = true;
|
|
"name" = "/var/lib/kea/dhcp4.leases";
|
|
};
|
|
|
|
"subnet4" = [
|
|
{
|
|
"subnet" = "10.32.46.0/24";
|
|
"interface" = "mngt";
|
|
|
|
"option-data" = [
|
|
{
|
|
"name" = "routers";
|
|
"data" = config.networking.defaultGateway.address;
|
|
}
|
|
{
|
|
"name" = "domain-name-servers";
|
|
"data" = "10.0.0.53,10.1.1.10";
|
|
}
|
|
{
|
|
"name" = "domain-name";
|
|
"data" = "mngt.${config.networking.domain}";
|
|
}
|
|
{
|
|
"name" = "domain-search";
|
|
"data" = "mngt.${config.networking.domain}";
|
|
}
|
|
];
|
|
|
|
"pools" = [
|
|
{
|
|
"pool" = "10.32.46.100-10.32.46.200";
|
|
}
|
|
];
|
|
|
|
"reservations" = mkReservations "mngt";
|
|
}
|
|
|
|
{
|
|
"subnet" = "10.32.47.0/24";
|
|
"interface" = "data";
|
|
|
|
"option-data" = [
|
|
{
|
|
"name" = "domain-name-servers";
|
|
"data" = "10.0.0.53,10.1.1.10";
|
|
}
|
|
{
|
|
"name" = "domain-name";
|
|
"data" = config.networking.domain;
|
|
}
|
|
{
|
|
"name" = "domain-search";
|
|
"data" = config.networking.domain;
|
|
}
|
|
];
|
|
|
|
"pools" = [
|
|
{
|
|
"pool" = "10.32.47.100-10.32.47.200";
|
|
}
|
|
];
|
|
|
|
"reservations" = mkReservations "data";
|
|
}
|
|
];
|
|
};
|
|
};
|
|
};
|
|
}
|