ae359d1ef2
Fixes issues described in #208242 for this part of the nixpkgs tree. There are no behavioral changes in this, it only adjusts the code so that it is easier to understand.
78 lines
2.2 KiB
Nix
78 lines
2.2 KiB
Nix
{ config, lib, pkgs, options, ... }:
|
|
|
|
let
|
|
cfg = config.services.prometheus.exporters.junos-czerwonk;
|
|
inherit (lib)
|
|
mkOption
|
|
types
|
|
escapeShellArg
|
|
mkIf
|
|
concatStringsSep
|
|
;
|
|
|
|
configFile = if cfg.configuration != null then configurationFile else (escapeShellArg cfg.configurationFile);
|
|
|
|
configurationFile = pkgs.writeText "prometheus-junos-czerwonk-exporter.conf" (builtins.toJSON (cfg.configuration));
|
|
in
|
|
{
|
|
port = 9326;
|
|
extraOpts = {
|
|
environmentFile = mkOption {
|
|
type = types.nullOr types.str;
|
|
default = null;
|
|
description = ''
|
|
File containing env-vars to be substituted into the exporter's config.
|
|
'';
|
|
};
|
|
configurationFile = mkOption {
|
|
type = types.nullOr types.path;
|
|
default = null;
|
|
description = ''
|
|
Specify the JunOS exporter configuration file to use.
|
|
'';
|
|
};
|
|
configuration = mkOption {
|
|
type = types.nullOr types.attrs;
|
|
default = null;
|
|
description = ''
|
|
JunOS exporter configuration as nix attribute set. Mutually exclusive with the `configurationFile` option.
|
|
'';
|
|
example = {
|
|
devices = [
|
|
{
|
|
host = "router1";
|
|
key_file = "/path/to/key";
|
|
}
|
|
];
|
|
};
|
|
};
|
|
telemetryPath = mkOption {
|
|
type = types.str;
|
|
default = "/metrics";
|
|
description = ''
|
|
Path under which to expose metrics.
|
|
'';
|
|
};
|
|
};
|
|
serviceOpts = {
|
|
serviceConfig = {
|
|
DynamicUser = false;
|
|
EnvironmentFile = mkIf (cfg.environmentFile != null) [ cfg.environmentFile ];
|
|
RuntimeDirectory = "prometheus-junos-czerwonk-exporter";
|
|
ExecStartPre = [
|
|
"${pkgs.writeShellScript "subst-secrets-junos-czerwonk-exporter" ''
|
|
umask 0077
|
|
${pkgs.envsubst}/bin/envsubst -i ${configFile} -o ''${RUNTIME_DIRECTORY}/junos-exporter.json
|
|
''}"
|
|
];
|
|
ExecStart = ''
|
|
${pkgs.prometheus-junos-czerwonk-exporter}/bin/junos_exporter \
|
|
-web.listen-address ${cfg.listenAddress}:${toString cfg.port} \
|
|
-web.telemetry-path ${cfg.telemetryPath} \
|
|
-config.file ''${RUNTIME_DIRECTORY}/junos-exporter.json \
|
|
${concatStringsSep " \\\n " cfg.extraFlags}
|
|
'';
|
|
};
|
|
};
|
|
}
|