mirror of
https://github.com/NixOS/nixpkgs.git
synced 2025-06-09 19:13:26 +03:00
75 lines
1.9 KiB
Nix
75 lines
1.9 KiB
Nix
{ lib, ... }:
|
|
{
|
|
name = "ntpd-rs";
|
|
|
|
meta = {
|
|
maintainers = with lib.maintainers; [ fpletz ];
|
|
};
|
|
|
|
nodes = {
|
|
client = {
|
|
services.ntpd-rs = {
|
|
enable = true;
|
|
metrics.enable = false;
|
|
useNetworkingTimeServers = false;
|
|
settings = {
|
|
source = [
|
|
{
|
|
mode = "server";
|
|
address = "server";
|
|
}
|
|
];
|
|
synchronization = {
|
|
minimum-agreeing-sources = 1;
|
|
};
|
|
};
|
|
};
|
|
};
|
|
server = {
|
|
networking.firewall = {
|
|
allowedTCPPorts = [
|
|
9975
|
|
];
|
|
allowedUDPPorts = [
|
|
123
|
|
];
|
|
};
|
|
|
|
services.ntpd-rs = {
|
|
enable = true;
|
|
metrics.enable = true;
|
|
settings = {
|
|
observability = {
|
|
metrics-exporter-listen = "[::]:9975";
|
|
};
|
|
server = [
|
|
{ listen = "[::]:123"; }
|
|
];
|
|
};
|
|
};
|
|
};
|
|
};
|
|
|
|
testScript =
|
|
{ nodes, ... }:
|
|
''
|
|
start_all()
|
|
|
|
for machine in (server, client):
|
|
machine.wait_for_unit('multi-user.target')
|
|
machine.succeed('systemctl is-active ntpd-rs.service')
|
|
|
|
client.fail('systemctl is-active ntpd-rs-metrics.service')
|
|
server.succeed('systemctl is-active ntpd-rs-metrics.service')
|
|
|
|
server.wait_for_open_port(9975)
|
|
client.succeed('curl http://server:9975/metrics | grep ntp_uptime_seconds')
|
|
server.fail('curl --fail --connect-timeout 2 http://client:9975/metrics | grep ntp_uptime_seconds')
|
|
|
|
client.succeed("ntp-ctl status | grep server:123")
|
|
server.succeed("ntp-ctl status | grep '\[::\]:123'")
|
|
|
|
client.succeed("grep '^mode = \"server\"' $(systemctl status ntpd-rs | grep -oE '/nix/store[^ ]*ntpd-rs.toml')")
|
|
server.succeed("grep '^mode = \"pool\"' $(systemctl status ntpd-rs | grep -oE '/nix/store[^ ]*ntpd-rs.toml')")
|
|
'';
|
|
}
|