feat(ulogd): enabling ulogd #121

Merged
rlahfa merged 1 commit from lbailly/infrastructure:ulogd into main 2024-09-08 12:21:08 +02:00
2 changed files with 57 additions and 0 deletions

View file

@ -10,6 +10,7 @@ lib.extra.mkConfig {
"k-radius" "k-radius"
"networking" "networking"
"ups" "ups"
"ulogd"
]; ];
extraConfig = { extraConfig = {

View file

@ -0,0 +1,56 @@
{
config,
lib,
pkgs,
...
}:
{
services = {
ulogd = {
enable = true;
logLevel = 5;

Si ça fonctionne désormais ce n'est pas la peine d'activer les logs de debug, à part spammer journald

Si ça fonctionne désormais ce n'est pas la peine d'activer les logs de debug, à part spammer journald

D'après la doc, 5 correspond au niveau notice de log, 1 serai debug. Si tu veux on peut monter à 7 pour avoir que les erreurs.

D'après [la doc](https://search.nixos.org/options?channel=unstable&show=services.ulogd.logLevel), 5 correspond au niveau notice de log, 1 serai debug. Si tu veux on peut monter à 7 pour avoir que les erreurs.
settings = {
global = {
logfile = "/var/log/ulogd.log";
stack = [ "ct1:NFCT,ip2str1:IP2STR,pgsql1:PGSQL" ];
};
ct1 = { };
pgsql1 = {
db = "ulogd";
user = "ulogd";
table = "ulog2_ct";
procedure = "INSERT_CT";
};
};
rlahfa marked this conversation as resolved Outdated

connstring = "postgresql:///ulogd?host=/run/postgresql"; should work in principle

`connstring = "postgresql:///ulogd?host=/run/postgresql";` should work in principle

it doesn't want a connection URI, but really a connection string, as in section 31.1.1.1. of the postgres doc. In the end, I just don't give network connection information and it behave as expected.

it doesn't want a connection URI, but really a connection string, as in section 31.1.1.1. of the [postgres doc](https://www.postgresql.org/docs/9.2/libpq-connect.html#LIBPQ-CONNSTRING). In the end, I just don't give network connection information and it behave as expected.
};
postgresql = {
enable = true;
identMap = ''
ulogd-map root ulogd
'';
authentication = ''
lbailly marked this conversation as resolved Outdated

The root user is unnecessary

The `root` user is unnecessary

I removed the root user in the database.

I removed the root user in the database.
local ulogd ulogd peer map=ulogd-map
'';
ensureUsers = [
rlahfa marked this conversation as resolved Outdated

ulogd user is unnecessary as ulogd may require root privileges for now

`ulogd` user is unnecessary as ulogd may require `root` privileges for now

we need a user to access the database, and I'm not willing to use the 'postgres' user for such operations

we need a user to access the database, and I'm not willing to use the 'postgres' user for such operations
{
name = "ulogd";
ensureDBOwnership = true;
}
];
ensureDatabases = [ "ulogd" ];
};
};
systemd.services.ulogd = {
serviceConfig.StateDirectory = "ulogd";
requires = [ "postgresql.service" ];
after = [ "postgresql.service" ];

Je ne pense pas que ça fasse ce que tu veux

Je ne pense pas que ça fasse ce que tu veux

Le but c'est que le script ne soit exec que quand le serveur s'initialise, il suppr toute les données.
Je peux pas utiliser .first_statup car il est suppr au tout début de postStart, ducoup je recréer le flag.

Le but c'est que le script ne soit exec que quand le serveur s'initialise, il suppr toute les données. Je peux pas utiliser .first_statup car il est suppr au tout début de postStart, ducoup je recréer le flag.

Mais en pratique ça ne tourne jamais donc je vois pas trop l'intérêt de le mettre

Mais en pratique ça ne tourne jamais donc je vois pas trop l'intérêt de le mettre

si on doit redéployer un routeur avec log, on aura le nécessaire dans le module sans avoir à recheck comment deploy ulogd, sinon le ensureUsers et ensureDatabases ne servent pas non plus...

si on doit redéployer un routeur avec log, on aura le nécessaire dans le module sans avoir à recheck comment deploy ulogd, sinon le `ensureUsers` et `ensureDatabases` ne servent pas non plus...

En vérité, il faudrait plutôt check l'existence des tables pour le cas où le module est déployé sur une machine qui a déjà un pgsql, mais bon...

En vérité, il faudrait plutôt check l'existence des tables pour le cas où le module est déployé sur une machine qui a déjà un pgsql, mais bon...

Oui, ou alors faire un preStart dans l'unit de ulogd en sauvegardant le state dans var/lib/ulogd, dans ce cas on pourra charger les tables lors de la première activation du module

Oui, ou alors faire un preStart dans l'unit de ulogd en sauvegardant le state dans `var/lib/ulogd`, dans ce cas on pourra charger les tables lors de la première activation du module
path = [ config.services.postgresql.package ];
preStart = lib.mkAfter ''
if ! test -e "/var/lib/ulogd/.initialized"; then
psql -f "${pkgs.ulogd.doc}/share/doc/ulogd-pgsql/pgsql-ulogd2.sql" -d ulogd -U ulogd
touch "/var/lib/ulogd/.initialized"
fi
'';
};
}