2 Commits

  1. 1
      machines/manager/default.nix
  2. 16
      machines/manager/docs.nix
  3. 53
      machines/manager/monitoring.nix
  4. 4
      machines/node/default.nix
  5. 4
      modules/netinstall.nix
  6. 2
      modules/node.nix
  7. 5
      shared/default.nix

1
machines/manager/default.nix

@ -22,6 +22,7 @@ with lib;
./mpi.nix
./slurm.nix
./docs.nix
./monitoring.nix
];
deployment = {

16
machines/manager/docs.nix

@ -7,17 +7,13 @@ with lib;
../../docs/module.nix
];
services.nginx = {
virtualHosts = {
"${config.networking.domain}" = {
default = true;
services.nginx.virtualHosts."${config.networking.domain}" = {
default = true;
serverAliases = [
"doku.${config.networking.domain}"
];
serverAliases = [
"doku.${config.networking.domain}"
];
locations."/".root = config.system.build.docs;
};
};
locations."/".root = config.system.build.docs;
};
}

53
machines/manager/monitoring.nix

@ -0,0 +1,53 @@
{ pkgs, lib, config, nodes, ... }:
with lib;
{
services.grafana = {
enable = true;
settings.server = {
addr = "127.0.0.1";
inherit (config.networking) domain;
root_url = "%(protocol)s://%(domain)s:%(http_port)s/grafana/";
serve_from_sub_path = true;
};
# provision = {
# enable = true;
# datasources.path = ./grafana/datasources.yaml
# };
};
services.prometheus = {
enable = true;
webExternalUrl = "http://${config.networking.domain}/prometheus";
scrapeConfigs = mapAttrsToList
(name: node: {
job_name = name;
static_configs = [
{
targets = [
"${name}:${toString node.config.services.prometheus.exporters.node.port}"
];
}
];
})
nodes;
};
services.nginx.virtualHosts.${config.networking.domain} = {
locations."/grafana" = {
proxyPass = "http://127.0.0.1:${toString config.services.grafana.settings.server.http_port}";
proxyWebsockets = true;
};
locations."/prometheus" = {
proxyPass = "http://127.0.0.1:${toString config.services.prometheus.port}";
proxyWebsockets = true;
};
};
}

4
machines/node/default.nix

@ -15,6 +15,8 @@ with lib;
deployment = {
targetHost = "10.32.47.${toString (100 + id)}";
targetUser = "root";
tags = [ "node" ];
};
hpc.node = {
@ -22,6 +24,8 @@ with lib;
inherit id;
};
hpc.netinstall.enable = true;
networking.hostName = config.hpc.node.name;
networking.timeServers = [

4
modules/netinstall.nix

@ -8,11 +8,9 @@ with lib;
};
config = mkIf config.hpc.netinstall.enable {
deployment.tags = [ "netinstall" ];
assertions = [
{
assertion = elem "data" config.hpc.dhcp.reservations;
assertion = hasAttr "data" config.hpc.dhcp.reservations;
message = "NetInstall needs DHCP reservation in data network";
}
];

2
modules/node.nix

@ -24,7 +24,5 @@ with lib;
config = mkIf config.hpc.node.enable {
hpc.node.name = "node-${fixedWidthNumber 2 config.hpc.node.id}";
deployment.tags = [ "node" ];
};
}

5
shared/default.nix

@ -53,5 +53,10 @@
services.haveged.enable = true;
services.prometheus.exporters = {
node.enable = true;
ipmi.enable = true;
};
system.stateVersion = "22.11";
}
Loading…
Cancel
Save