nixos-exporter: enable NATS cache sharing
When one host fetches the latest flake revision, it publishes to NATS and all other hosts receive the update immediately. This reduces redundant nix flake metadata calls across the fleet. - Add nkeys to devshell for key generation - Add nixos-exporter user to NATS HOMELAB account - Add Vault secret for NKey storage - Configure all hosts to use NATS for revision sharing - Update nixos-exporter input to version with NATS support Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
8
flake.lock
generated
8
flake.lock
generated
@@ -49,11 +49,11 @@
|
||||
]
|
||||
},
|
||||
"locked": {
|
||||
"lastModified": 1770422522,
|
||||
"narHash": "sha256-WmIFnquu4u58v8S2bOVWmknRwHn4x88CRfBFTzJ1inQ=",
|
||||
"lastModified": 1770590420,
|
||||
"narHash": "sha256-Gih+2ufQXcZQzrlSrgZWcG7u9TjQT7z/6qybnX5yJn8=",
|
||||
"ref": "refs/heads/master",
|
||||
"rev": "cf0ce858997af4d8dcc2ce10393ff393e17fc911",
|
||||
"revCount": 11,
|
||||
"rev": "acfb142788dc994cf64931f55063393d807c6ebf",
|
||||
"revCount": 14,
|
||||
"type": "git",
|
||||
"url": "https://git.t-juice.club/torjus/nixos-exporter"
|
||||
},
|
||||
|
||||
@@ -217,6 +217,7 @@
|
||||
pkgs.opentofu
|
||||
pkgs.openbao
|
||||
pkgs.kanidm_1_8
|
||||
pkgs.nkeys
|
||||
(pkgs.callPackage ./scripts/create-host { })
|
||||
homelab-deploy.packages.${pkgs.system}.default
|
||||
];
|
||||
|
||||
@@ -35,9 +35,18 @@
|
||||
HOMELAB = {
|
||||
jetstream = "enabled";
|
||||
users = [
|
||||
# alerttonotify (full access to HOMELAB account)
|
||||
{
|
||||
nkey = "UASLNKLWGICRTZMIXVD3RXLQ57XRIMCKBHP5V3PYFFRNO3E3BIJBCYMZ";
|
||||
}
|
||||
# nixos-exporter (restricted to nixos-exporter subjects)
|
||||
{
|
||||
nkey = "UBCL3ODHVERVZJNGUJ567YBBKHQZOV3LK3WO6TVVSGQOCTK2NQ3IJVRV"; # Replace with public key from: nix develop -c nk -gen user -pubout
|
||||
permissions = {
|
||||
publish = [ "nixos-exporter.>" ];
|
||||
subscribe = [ "nixos-exporter.>" ];
|
||||
};
|
||||
}
|
||||
];
|
||||
};
|
||||
|
||||
|
||||
@@ -19,14 +19,31 @@
|
||||
];
|
||||
};
|
||||
|
||||
# Fetch NKey from Vault for NATS authentication
|
||||
vault.secrets.nixos-exporter-nkey = {
|
||||
secretPath = "shared/nixos-exporter/nkey";
|
||||
extractKey = "nkey";
|
||||
};
|
||||
|
||||
services.prometheus.exporters.nixos = {
|
||||
enable = true;
|
||||
# Default port: 9971
|
||||
flake = {
|
||||
enable = true;
|
||||
url = "git+https://git.t-juice.club/torjus/nixos-servers.git";
|
||||
nats = {
|
||||
enable = true;
|
||||
url = "nats://nats1.home.2rjus.net:4222";
|
||||
credentialsFile = "/run/secrets/nixos-exporter-nkey";
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
# Ensure exporter starts after Vault secret is available
|
||||
systemd.services.prometheus-nixos-exporter = {
|
||||
after = [ "vault-secret-nixos-exporter-nkey.service" ];
|
||||
requires = [ "vault-secret-nixos-exporter-nkey.service" ];
|
||||
};
|
||||
|
||||
# Register nixos-exporter as a Prometheus scrape target
|
||||
homelab.monitoring.scrapeTargets = [
|
||||
|
||||
@@ -114,6 +114,12 @@ locals {
|
||||
auto_generate = true
|
||||
password_length = 64
|
||||
}
|
||||
|
||||
# NKey for nixos-exporter NATS cache sharing
|
||||
"shared/nixos-exporter/nkey" = {
|
||||
auto_generate = false
|
||||
data = { nkey = var.nixos_exporter_nkey }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -73,3 +73,10 @@ variable "homelab_deploy_admin_deployer_nkey" {
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
variable "nixos_exporter_nkey" {
|
||||
description = "NKey seed for nixos-exporter NATS authentication"
|
||||
type = string
|
||||
default = "PLACEHOLDER"
|
||||
sensitive = true
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user