Compare commits

..

3 commits

Author SHA1 Message Date
a7def32a75
feat(nimbolus): init a http terraform backend
Some checks failed
Build all the nodes / compute01 (pull_request) Successful in 1m52s
Build all the nodes / storage01 (pull_request) Successful in 1m35s
Build all the nodes / krz01 (pull_request) Successful in 1m51s
Build all the nodes / Jaccess04 (push) Successful in 49s
Build all the nodes / Jaccess01 (push) Successful in 49s
Run pre-commit on all files / pre-commit (push) Successful in 53s
Build all the nodes / ap01 (push) Successful in 1m15s
Build all the nodes / hypervisor01 (push) Successful in 1m23s
Build all the nodes / hypervisor03 (push) Successful in 1m29s
Build all the nodes / cof02 (push) Successful in 1m33s
Build all the nodes / build01 (push) Successful in 1m34s
Build all the nodes / hypervisor02 (push) Successful in 1m33s
Build all the nodes / bridge01 (push) Successful in 1m44s
Build all the nodes / geo01 (push) Successful in 1m44s
Build all the nodes / netcore01 (push) Successful in 31s
Build all the nodes / netcore02 (push) Successful in 34s
Build all the nodes / compute01 (push) Successful in 1m57s
Build the shell / build-shell (push) Successful in 26s
Build all the nodes / geo02 (push) Successful in 2m4s
Build all the nodes / iso (push) Successful in 1m19s
Build all the nodes / lab-router01 (push) Successful in 58s
Build all the nodes / tower01 (push) Successful in 57s
Build all the nodes / web02 (push) Successful in 55s
Build all the nodes / vault01 (push) Successful in 1m9s
Build all the nodes / zulip01 (push) Successful in 58s
Build all the nodes / web03 (push) Successful in 1m2s
Build all the nodes / rescue01 (push) Successful in 1m19s
Build all the nodes / web01 (push) Successful in 1m26s
Build all the nodes / krz01 (push) Successful in 6m19s
Build all the nodes / storage01 (push) Has been cancelled
2025-06-17 17:26:53 +02:00
d6300e6e19 feat(systemd-notify): allow multiple failure scripts
All checks were successful
Build all the nodes / zulip01 (pull_request) Successful in 57s
Build all the nodes / web01 (pull_request) Successful in 1m13s
Build all the nodes / storage01 (pull_request) Successful in 1m38s
Build all the nodes / Jaccess04 (push) Successful in 24s
Build all the nodes / Jaccess01 (push) Successful in 28s
Run pre-commit on all files / pre-commit (push) Successful in 30s
Build all the nodes / ap01 (push) Successful in 43s
Build all the nodes / bridge01 (push) Successful in 48s
Build all the nodes / netcore01 (push) Successful in 25s
Build all the nodes / hypervisor01 (push) Successful in 52s
Build all the nodes / geo01 (push) Successful in 57s
Build all the nodes / cof02 (push) Successful in 1m1s
Build all the nodes / hypervisor03 (push) Successful in 1m0s
Build all the nodes / hypervisor02 (push) Successful in 1m1s
Build all the nodes / geo02 (push) Successful in 1m2s
Build all the nodes / build01 (push) Successful in 1m4s
Build all the nodes / netcore02 (push) Successful in 22s
Build all the nodes / iso (push) Successful in 1m4s
Build all the nodes / lab-router01 (push) Successful in 55s
Build all the nodes / compute01 (push) Successful in 1m20s
Build all the nodes / krz01 (push) Successful in 1m36s
Build all the nodes / tower01 (push) Successful in 47s
Build the shell / build-shell (push) Successful in 21s
Build all the nodes / vault01 (push) Successful in 56s
Build all the nodes / web02 (push) Successful in 51s
Build all the nodes / rescue01 (push) Successful in 1m10s
Build all the nodes / web03 (push) Successful in 54s
Build all the nodes / zulip01 (push) Successful in 46s
Build all the nodes / web01 (push) Successful in 1m8s
Build all the nodes / storage01 (push) Successful in 1m35s
2025-06-17 17:11:56 +02:00
c1afcb7768 refactor(systemd-notify): take it from nix-modules 2025-06-17 17:11:56 +02:00
3 changed files with 59 additions and 13 deletions

View file

@ -39,6 +39,7 @@
"extranix"
"forgejo-multiuser-nix-runners"
"openbao"
"systemd-notify"
])
++ [
"${sources.agenix}/modules/age.nix"
@ -52,7 +53,6 @@
"services/forgejo-nix-runners"
"services/nginx-sni"
"services/reaction"
"services/systemd-notify"
"services/victorialogs"
"services/victoriametrics"
]

View file

@ -54,19 +54,16 @@ in
};
services.systemd-notify = {
enable = true;
command = builtins.toString (
pkgs.writeShellScript "sendmail" ''
${pkgs.msmtp}/bin/sendmail -i -t <<ERRMAIL
To: admins+monitoring@dgnum.eu, ${emails}
Subject: [$HOSTNAME] Systemd failure: $1
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset=UTF-8
mail = pkgs.writeShellScript "sendmail" ''
${pkgs.msmtp}/bin/sendmail -i -t <<ERRMAIL
To: admins+monitoring@dgnum.eu, ${emails}
Subject: [$HOSTNAME] Systemd failure: $1
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset=UTF-8
$(systemctl status --full "$1")
ERRMAIL
''
);
$(systemctl status --full "$1")
ERRMAIL
'';
};
age-secrets.sources = [ ./. ];
};

View file

@ -0,0 +1,49 @@
# SPDX-FileCopyrightText: 2024 Tom Hubrecht <tom.hubrecht@dgnum.eu>
#
# SPDX-License-Identifier: EUPL-1.2
{ config, lib, ... }:
let
inherit (lib)
getExe
mapAttrs'
mapAttrsToList
mkOption
mkForce
nameValuePair
;
inherit (lib.types) attrsOf package submodule;
cfg = config.services.systemd-notify;
in
{
options.services.systemd-notify = mkOption {
type = attrsOf package;
description = ''
Commands to execute when a systemd unit fails.
Attrs keys will be the unit name and attrs value is the command that
will be run with the name of the failed unit as an argument.
'';
default = { };
};
options.systemd.services = mkOption {
type = attrsOf (submodule {
config.onFailure = mapAttrsToList (name: _: "${name}@%n.service") cfg;
});
};
config.systemd.services = mapAttrs' (
name: script:
nameValuePair "${name}@" {
description = "Run ${name} script on service failures.";
onFailure = mkForce [ ]; # Avoid recursive failures
serviceConfig = {
ExecStart = "${getExe script} %i";
Type = "oneshot";
};
}
) cfg;
}