nixos/victoriametrics: Add ability to pass basicAuthPasswordFile

Changed files
+36 -6
nixos
modules
services
tests
victoriametrics
+34 -2
nixos/modules/services/databases/victoriametrics.nix
···
'';
};
+
basicAuthUsername = lib.mkOption {
+
default = null;
+
type = lib.types.nullOr lib.types.str;
+
description = ''
+
Basic Auth username used to protect VictoriaMetrics instance by authorization
+
'';
+
};
+
+
basicAuthPasswordFile = lib.mkOption {
+
default = null;
+
type = lib.types.nullOr lib.types.path;
+
description = ''
+
File that contains the Basic Auth password used to protect VictoriaMetrics instance by authorization
+
'';
+
};
+
prometheusConfig = lib.mkOption {
type = lib.types.submodule { freeformType = settingsFormat.type; };
default = { };
···
default = [ ];
example = literalExpression ''
[
-
"-httpAuth.username=username"
-
"-httpAuth.password=file:///abs/path/to/file"
"-loggerLevel=WARN"
]
'';
···
};
config = lib.mkIf cfg.enable {
+
+
assertions = [
+
{
+
assertion =
+
(cfg.basicAuthUsername == null && cfg.basicAuthPasswordFile == null)
+
|| (cfg.basicAuthUsername != null && cfg.basicAuthPasswordFile != null);
+
message = "Both basicAuthUsername and basicAuthPasswordFile must be set together to enable basicAuth functionality, or neither should be set.";
+
}
+
];
+
systemd.services.victoriametrics = {
description = "VictoriaMetrics time series database";
wantedBy = [ "multi-user.target" ];
···
ExecStart = lib.escapeShellArgs (
startCLIList
++ lib.optionals (cfg.prometheusConfig != { }) [ "-promscrape.config=${prometheusConfigYml}" ]
+
++ lib.optional (cfg.basicAuthUsername != null) "-httpAuth.username=${cfg.basicAuthUsername}"
+
++ lib.optional (
+
cfg.basicAuthPasswordFile != null
+
) "-httpAuth.password=file://%d/basic_auth_password"
);
DynamicUser = true;
+
LoadCredential = lib.optionals (cfg.basicAuthPasswordFile != null) [
+
"basic_auth_password:${cfg.basicAuthPasswordFile}"
+
];
+
RestartSec = 1;
Restart = "on-failure";
RuntimeDirectory = "victoriametrics";
+2 -4
nixos/tests/victoriametrics/remote-write.nix
···
networking.firewall.allowedTCPPorts = [ 8428 ];
services.victoriametrics = {
enable = true;
-
extraOptions = [
-
"-httpAuth.username=${username}"
-
"-httpAuth.password=file://${toString passwordFile}"
-
];
+
basicAuthUsername = username;
+
basicAuthPasswordFile = toString passwordFile;
};
};