feat(nimbolus): init a http terraform backend #479

Merged
thubrecht merged 1 commit from nimbolus-tf into main 2025-06-17 21:08:50 +02:00
Member

HTTP backend for #145 for simple multiple states managing

HTTP backend for #145 for simple multiple states managing
requested review from thubrecht 2025-06-13 20:56:14 +02:00
Author
Member

@thubrecht je veux bien que tu review, surtout pour le module, mais il faut pas apply, j'ai un truc à faire juste avant et juste après l'apply

@thubrecht je veux bien que tu review, surtout pour le module, mais il faut pas apply, j'ai un truc à faire juste avant et juste après l'apply
lbailly changed title from WIP: feat(nimbolus): init a http terraform backend to feat(nimbolus): init a http terraform backend [DO NOT SIMPLY APPLY] 2025-06-14 21:48:54 +02:00
lbailly changed title from feat(nimbolus): init a http terraform backend [DO NOT SIMPLY APPLY] to feat(nimbolus): init a http terraform backend 2025-06-15 08:10:49 +02:00
thubrecht requested changes 2025-06-15 09:07:44 +02:00
Dismissed
thubrecht left a comment
Owner

Tant qu'on déploie qu'un seul backend terraform, c'est mieux de faire l'arborescence :

compute01
└╴nimbolus-tf
  ├╴default.nix
  └╴module.nix
Tant qu'on déploie qu'un seul backend terraform, c'est mieux de faire l'arborescence : ``` compute01 └╴nimbolus-tf ├╴default.nix └╴module.nix ```
@ -0,0 +25,4 @@
# from nixpkgs, commit b1371135b5db3fcf728114d92d5bd0218109598a
# FIXME: Should be replaced by nixpkgs lib when going to nixos-25.05
concatMapAttrsStringSep =
Owner

Inutile du coup

Inutile du coup
lbailly marked this conversation as resolved
@ -0,0 +34,4 @@
{
options.services.nimbolus-tf = {
enable = mkEnableOption "the nimbolus terraform http backend";
package = mkOption {
Owner

mkPackageOption

`mkPackageOption`
lbailly marked this conversation as resolved
@ -0,0 +48,4 @@
Environment variables for nimbolus configuration.
'';
};
secretEnvironment = mkOption {
Owner

À remplace par environmentFile si vraiment nécessaire, mais normalement tu peux juste delete

À remplace par `environmentFile` si vraiment nécessaire, mais normalement tu peux juste delete
lbailly marked this conversation as resolved
@ -0,0 +57,4 @@
};
};
config = mkIf cfg.enable {
systemd.services."nimbolus-tf" = {
Owner

Pas besoin de quote nimbolus-tf

Pas besoin de quote `nimbolus-tf`
Author
Member

C'est un truc dont on avais déjà parlé, perso je préfère quote quand c'est la key d'un attrsOf

C'est un truc dont on avais déjà parlé, perso je préfère quote quand c'est la key d'un attrsOf
Owner

Je comprends mais du coup ça fait deux standards différents dans le repo, et le service quoté a vachement moins d'occurrences. Je te propose qu'on merge en unquoted et je ferai une PR pour tout passer avec des quotes, plus l'écriture d'un fichier FORMATTING.md avec des règles à respecter

Je comprends mais du coup ça fait deux standards différents dans le repo, et le service quoté a vachement moins d'occurrences. Je te propose qu'on merge en unquoted et je ferai une PR pour tout passer avec des quotes, plus l'écriture d'un fichier `FORMATTING.md` avec des règles à respecter
lbailly marked this conversation as resolved
@ -0,0 +62,4 @@
wantedBy = [ "multi-user.target" ];
serviceConfig = {
EnvironmentFile = "-/run/nimbolus-tf/env-file";
ExecStart = "${getExe cfg.package}";
Owner

Pas besoin d'interpolation

Pas besoin d'interpolation
lbailly marked this conversation as resolved
@ -0,0 +71,4 @@
${concatMapAttrsStringSep "\n" (
key: value: ''echo "${key}=$(cat ${value})" >> /run/nimbolus-tf/env-file''
) cfg.secretEnvironment}
chmod a+r /run/nimbolus-tf/env-file
Owner

Extrêmement bof, ton cfg.environment tu peux l'inherit dans ton unit systemd et pour les secrets il vaut mieux faire un environmentFile

Extrêmement bof, ton `cfg.environment` tu peux l'inherit dans ton unit systemd et pour les secrets il vaut mieux faire un `environmentFile`
Owner

Surtout que pour les secrets il existe les variables KMS_KEY_FILE et STORAGE_S3_SECRET_KEY_FILE

Surtout que pour les secrets il existe les variables `KMS_KEY_FILE` et `STORAGE_S3_SECRET_KEY_FILE`
lbailly marked this conversation as resolved
@ -0,0 +26,4 @@
STORAGE_S3_USE_SSL = "true";
STORAGE_S3_BUCKET = "nimbolus-dgnum";
STORAGE_S3_ACCESS_KEY = "GKefa111701f349de3988f0010";
STORAGE_S3_SECRET_KEY_FILE = config.age.secrets."nimbolus-s3_secret".path;
Owner

Pour ne pas créer d'user distinct, on peut faire:

STORAGE_S3_SECRET_KEY_FILE = "%d/s3_secret_key";

Et

systemd.services.nimbolus-tf.serviceConfig.LoadCredential = [ "s3_secret_key:${config.age.secrets."nimbolus-s3_secret".path}" ];
Pour ne pas créer d'user distinct, on peut faire: ``` STORAGE_S3_SECRET_KEY_FILE = "%d/s3_secret_key"; ``` Et ```nix systemd.services.nimbolus-tf.serviceConfig.LoadCredential = [ "s3_secret_key:${config.age.secrets."nimbolus-s3_secret".path}" ]; ```
lbailly marked this conversation as resolved
@ -0,0 +19,4 @@
package = (import sources.kat-pkgs { inherit pkgs; }).nimbolus-tf-backend;
settings = {
LISTEN_ADDR = "127.0.0.1:${toString port}";
KMS_KEY_PATH = config.age.secrets."nimbolus-kms_key".path;
Owner

C'est KMS_KEY_FILE et on peut faire le même trick avec LoadCredential

C'est `KMS_KEY_FILE` et on peut faire le même trick avec `LoadCredential`
lbailly marked this conversation as resolved
thubrecht dismissed thubrecht's review 2025-06-17 15:55:00 +02:00
Reason:

yes

thubrecht deleted branch nimbolus-tf 2025-06-17 21:08:50 +02:00
Sign in to join this conversation.
No description provided.