mirror of
https://github.com/oddlama/nix-config.git
synced 2025-10-11 07:10:39 +02:00
feat: automatically provision tokens for telegraf
This commit is contained in:
parent
6a14451033
commit
377da23c0d
10 changed files with 288 additions and 285 deletions
|
@ -32,113 +32,4 @@
|
|||
font = "ter-v28n";
|
||||
packages = [pkgs.terminus_font];
|
||||
};
|
||||
|
||||
services.influxdb2 = {
|
||||
enable = true;
|
||||
settings = {
|
||||
reporting-disabled = true;
|
||||
http-bind-address = "localhost:8086";
|
||||
};
|
||||
initialSetup = {
|
||||
enable = true;
|
||||
organization = "servers";
|
||||
bucket = "telegraf";
|
||||
|
||||
passwordFile = pkgs.writeText "tmp-pw" "ExAmPl3PA55W0rD";
|
||||
tokenFile = pkgs.writeText "tmp-tok" "asroiuhoiuahnawo4unhasdorviuhngoiuhraoug";
|
||||
};
|
||||
deleteOrganizations = ["delorg"];
|
||||
deleteBuckets = [
|
||||
{
|
||||
name = "delbucket";
|
||||
org = "delorg";
|
||||
}
|
||||
];
|
||||
deleteUsers = ["deluser"];
|
||||
deleteRemotes = [
|
||||
{
|
||||
name = "delremote";
|
||||
org = "delorg";
|
||||
}
|
||||
];
|
||||
deleteReplications = [
|
||||
{
|
||||
name = "delreplication";
|
||||
org = "delorg";
|
||||
}
|
||||
];
|
||||
deleteApiTokens = [
|
||||
{
|
||||
name = "deltoken";
|
||||
org = "delorg";
|
||||
user = "deluser";
|
||||
}
|
||||
];
|
||||
ensureOrganizations = [
|
||||
{
|
||||
name = "myorg";
|
||||
description = "Myorg description";
|
||||
}
|
||||
#{
|
||||
# name = "delorg";
|
||||
#}
|
||||
];
|
||||
ensureBuckets = [
|
||||
{
|
||||
name = "mybucket";
|
||||
org = "myorg";
|
||||
description = "Mybucket description";
|
||||
}
|
||||
#{
|
||||
# name = "delbucket";
|
||||
# org = "delorg";
|
||||
#}
|
||||
];
|
||||
ensureUsers = [
|
||||
{
|
||||
name = "myuser";
|
||||
org = "myorg";
|
||||
passwordFile = pkgs.writeText "tmp-pw" "abcgoiuhaoga";
|
||||
}
|
||||
#{
|
||||
# name = "deluser";
|
||||
# org = "delorg";
|
||||
# passwordFile = pkgs.writeText "tmp-pw" "abcgoiuhaoga";
|
||||
#}
|
||||
];
|
||||
#ensureRemotes = [
|
||||
# {
|
||||
# name = "delremote";
|
||||
# org = "delorg";
|
||||
# remoteUrl = "http://localhost:8087";
|
||||
# remoteOrgId = "a1b2c3d4a1b2c3d4";
|
||||
# remoteTokenFile = pkgs.writeText "tmp-pw" "abcgoiuhaoga";
|
||||
# }
|
||||
#];
|
||||
#ensureReplications = [
|
||||
# {
|
||||
# name = "delreplication";
|
||||
# org = "delorg";
|
||||
# remote = "delremote";
|
||||
# localBucket = "delbucket";
|
||||
# remoteBucket = "delbucket2";
|
||||
# }
|
||||
#];
|
||||
ensureApiTokens = [
|
||||
{
|
||||
name = "mytoken";
|
||||
org = "myorg";
|
||||
user = "myuser";
|
||||
readBuckets = ["mybucket"];
|
||||
writeBuckets = ["mybucket"];
|
||||
}
|
||||
#{
|
||||
# name = "deltoken";
|
||||
# org = "delorg";
|
||||
# user = "deluser";
|
||||
# readBuckets = ["delbucket"];
|
||||
# writeBuckets = ["delbucket"];
|
||||
#}
|
||||
];
|
||||
};
|
||||
}
|
||||
|
|
|
@ -29,8 +29,12 @@
|
|||
networking.hosts.${config.meta.wireguard.proxy-sentinel.ipv4} = [config.networking.providedDomains.influxdb];
|
||||
meta.telegraf = {
|
||||
enable = true;
|
||||
influxdb2.domain = config.networking.providedDomains.influxdb;
|
||||
influxdb2.organization = "servers";
|
||||
influxdb2.bucket = "telegraf";
|
||||
scrapeSensors = false;
|
||||
influxdb2 = {
|
||||
domain = config.networking.providedDomains.influxdb;
|
||||
organization = "servers";
|
||||
bucket = "telegraf";
|
||||
node = "ward-influxdb";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -32,9 +32,12 @@
|
|||
networking.hosts.${nodes.sentinel.config.meta.wireguard.proxy-sentinel.ipv4} = [nodes.sentinel.config.networking.providedDomains.influxdb];
|
||||
meta.telegraf = {
|
||||
enable = true;
|
||||
influxdb2.domain = nodes.sentinel.config.networking.providedDomains.influxdb;
|
||||
influxdb2.organization = "servers";
|
||||
influxdb2.bucket = "telegraf";
|
||||
influxdb2 = {
|
||||
domain = nodes.sentinel.config.networking.providedDomains.influxdb;
|
||||
organization = "servers";
|
||||
bucket = "telegraf";
|
||||
node = "ward-influxdb";
|
||||
};
|
||||
};
|
||||
|
||||
# TODO track my github stats
|
||||
|
|
|
@ -11,8 +11,12 @@ in {
|
|||
networking.hosts.${sentinelCfg.meta.wireguard.proxy-sentinel.ipv4} = [sentinelCfg.networking.providedDomains.influxdb];
|
||||
meta.telegraf = {
|
||||
enable = true;
|
||||
influxdb2.domain = sentinelCfg.networking.providedDomains.influxdb;
|
||||
influxdb2.organization = "servers";
|
||||
influxdb2.bucket = "telegraf";
|
||||
scrapeSensors = false;
|
||||
influxdb2 = {
|
||||
domain = sentinelCfg.networking.providedDomains.influxdb;
|
||||
organization = "servers";
|
||||
bucket = "telegraf";
|
||||
node = "ward-influxdb";
|
||||
};
|
||||
};
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@
|
|||
lib,
|
||||
nodes,
|
||||
utils,
|
||||
pkgs,
|
||||
...
|
||||
}: let
|
||||
sentinelCfg = nodes.sentinel.config;
|
||||
|
@ -51,14 +52,54 @@ in {
|
|||
};
|
||||
};
|
||||
|
||||
age.secrets.influxdb-admin-password = {
|
||||
generator.script = "alnum";
|
||||
mode = "440";
|
||||
group = "influxdb2";
|
||||
};
|
||||
|
||||
age.secrets.influxdb-admin-token = {
|
||||
generator.script = "alnum";
|
||||
mode = "440";
|
||||
group = "influxdb2";
|
||||
};
|
||||
|
||||
age.secrets.influxdb-user-telegraf-token = {
|
||||
generator.script = "alnum";
|
||||
mode = "440";
|
||||
group = "influxdb2";
|
||||
};
|
||||
|
||||
services.influxdb2 = {
|
||||
enable = true;
|
||||
settings = {
|
||||
reporting-disabled = true;
|
||||
http-bind-address = "${config.meta.wireguard.proxy-sentinel.ipv4}:${toString influxdbPort}";
|
||||
};
|
||||
provision = {
|
||||
enable = true;
|
||||
initialSetup = {
|
||||
organization = "default";
|
||||
bucket = "default";
|
||||
passwordFile = config.age.secrets.influxdb-admin-password.path;
|
||||
tokenFile = config.age.secrets.influxdb-admin-token.path;
|
||||
};
|
||||
ensureOrganizations = [
|
||||
{
|
||||
name = "servers";
|
||||
}
|
||||
];
|
||||
ensureBuckets = [
|
||||
{
|
||||
name = "telegraf";
|
||||
org = "servers";
|
||||
}
|
||||
];
|
||||
};
|
||||
};
|
||||
|
||||
environment.systemPackages = [pkgs.influxdb2-cli];
|
||||
|
||||
systemd.services.influxdb2 = {
|
||||
after = ["sys-subsystem-net-devices-${utils.escapeSystemdPath "proxy-sentinel"}.device"];
|
||||
serviceConfig.RestartSec = "600"; # Retry every 10 minutes
|
||||
|
|
|
@ -47,9 +47,12 @@ in {
|
|||
networking.hosts.${sentinelCfg.meta.wireguard.proxy-sentinel.ipv4} = [sentinelCfg.networking.providedDomains.influxdb];
|
||||
meta.telegraf = {
|
||||
enable = true;
|
||||
influxdb2.domain = sentinelCfg.networking.providedDomains.influxdb;
|
||||
influxdb2.organization = "servers";
|
||||
influxdb2.bucket = "telegraf";
|
||||
influxdb2 = {
|
||||
domain = sentinelCfg.networking.providedDomains.influxdb;
|
||||
organization = "servers";
|
||||
bucket = "telegraf";
|
||||
node = "ward-influxdb";
|
||||
};
|
||||
};
|
||||
|
||||
# Fails if there are no SMART devices
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue