diff options
| author | Paul Buetow <paul@buetow.org> | 2026-04-14 22:42:12 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-04-14 22:42:12 +0300 |
| commit | a911c4e690608a9a8430e928fe1853f4a217fbda (patch) | |
| tree | 598d2775b7ed1c757b96f3dbd10ad0c6caad2f21 /frontends/Rexfile | |
| parent | 2a81b54c59ff937f66d42bf7aa625c5e30d62321 (diff) | |
frontends: daily goprecords uptimed upload for fishfinger and blowfish.
Add POSIX sh script template deployed to /usr/local/bin/goprecords-upload.sh,
invoked from /etc/daily.local. Rex task goprecords_upload installs curl, renders
per-host script from geheim secrets/etc/goprecords/<host>.token, and hooks
commons. Document token layout and kubectl key creation in README.
Made-with: Cursor
Diffstat (limited to 'frontends/Rexfile')
| -rw-r--r-- | frontends/Rexfile | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/frontends/Rexfile b/frontends/Rexfile index f44a33c..09aa426 100644 --- a/frontends/Rexfile +++ b/frontends/Rexfile @@ -169,6 +169,51 @@ task 'uptimed', service 'uptimed', ensure => 'started'; }; +desc 'Upload uptimed stats to goprecords.f3s (daily.local; tokens in geheim secrets/etc/goprecords/)'; +task 'goprecords_upload', + group => 'frontends', + sub { + pkg 'curl', ensure => present; + + my $srv = connection->server; + my ($short) = $srv =~ /^([^.]+)\./; + unless ($short) { + Rex::Logger::info( "goprecords_upload: cannot parse short hostname from $srv", 'error' ); + return; + } + + my $token_path = "etc/goprecords/${short}.token"; + my $full = "./secrets/$token_path"; + unless ( -f $full ) { + Rex::Logger::info( "goprecords_upload: skip (missing $full; add via geheim)", 'warn' ); + return; + } + my $token = $secrets->($token_path); + chomp $token; + unless ($token) { + Rex::Logger::info( "goprecords_upload: empty secrets/$token_path", 'error' ); + return; + } + + file '/usr/local/bin/goprecords-upload.sh', + content => template( + './scripts/goprecords-upload.sh.tpl', + goprecords_host => $short, + goprecords_token => $token, + ), + owner => 'root', + group => 'wheel', + mode => '500'; + + file '/etc/daily.local', + ensure => 'present', + owner => 'root', + group => 'wheel', + mode => '644'; + + append_if_no_such_line '/etc/daily.local', '/usr/local/bin/goprecords-upload.sh'; + }; + desc 'Setup rsync'; task 'rsync', group => 'frontends', @@ -769,6 +814,7 @@ task 'commons', run_task 'nsd'; run_task 'nsd_failover'; run_task 'uptimed'; + run_task 'goprecords_upload'; run_task 'httpd'; run_task 'gemtexter'; run_task 'taskwarrior'; |
