From d2413943fa3a66c63df5a13822523067468c2f60 Mon Sep 17 00:00:00 2001 From: Bjørn Forsman Date: Thu, 22 Dec 2016 23:18:39 +0100 Subject: nixos/prometheus: add configText option for alertmanager The reason being less mental overhead when reading upstream documentation. Examples can be pasted right into the configuration instead of translating to Nix attrset first. --- .../services/monitoring/prometheus/alertmanager.nix | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) (limited to 'nixos') diff --git a/nixos/modules/services/monitoring/prometheus/alertmanager.nix b/nixos/modules/services/monitoring/prometheus/alertmanager.nix index da2cd02eaa3..cf761edad92 100644 --- a/nixos/modules/services/monitoring/prometheus/alertmanager.nix +++ b/nixos/modules/services/monitoring/prometheus/alertmanager.nix @@ -5,6 +5,10 @@ with lib; let cfg = config.services.prometheus.alertmanager; mkConfigFile = pkgs.writeText "alertmanager.yml" (builtins.toJSON cfg.configuration); + alertmanagerYml = + if cfg.configText != null then + pkgs.writeText "alertmanager.yml" cfg.configText + else mkConfigFile; in { options = { services.prometheus.alertmanager = { @@ -34,6 +38,17 @@ in { ''; }; + configText = mkOption { + type = types.nullOr types.lines; + default = null; + description = '' + Alertmanager configuration as YAML text. If non-null, this option + defines the text that is written to alertmanager.yml. If null, the + contents of alertmanager.yml is generated from the structured config + options. + ''; + }; + logFormat = mkOption { type = types.nullOr types.str; default = null; @@ -96,7 +111,7 @@ in { after = [ "network.target" ]; script = '' ${pkgs.prometheus-alertmanager.bin}/bin/alertmanager \ - -config.file ${mkConfigFile} \ + -config.file ${alertmanagerYml} \ -web.listen-address ${cfg.listenAddress}:${toString cfg.port} \ -log.level ${cfg.logLevel} \ ${optionalString (cfg.webExternalUrl != null) ''-web.external-url ${cfg.webExternalUrl} \''} -- cgit 1.4.1