[consfigurator] binary (non utf8) secrets

David Bremner david at tethera.net
Sat Apr 12 11:32:19 BST 2025


My secret store is a single gpg encrypted file (using
consfigurator.data.pgp).

I need to deploy some binary secrets (keys for "MUNGE"), and it isn't
clear to me how best to do this with consfigurator. I tried the
following to save it into the secret store.

    (defun set-data (path data &key (id1 "_secrets"))
      (consfigurator.data.pgp:set-data +secret-file+ id1 path data))

    (defun save-binary-file (path source)
      (set-data path (read-file-into-byte-vector source)))

When I try to deploy

  (file:secret-uploaded "_secrets" "testbin" "/etc/testbin")

I get a traceback

      0: (UIOP/UTILITY:PARAMETER-ERROR "Invalid ~S source ~S" UIOP/RUN-PROGRAM:VOMIT-OUTPUT-STREAM #(120 125 200 167 133 188 ...))
      1: ((LABELS UIOP/RUN-PROGRAM::ACTIVITY :IN UIOP/RUN-PROGRAM::%CALL-WITH-PROGRAM-IO) #<SB-SYS:FD-STREAM for "file /tmp/tmpUX5S4ADN.tmp" {1005993303}>)
      2: (UIOP/STREAM:CALL-WITH-OUTPUT-FILE #P"/tmp/tmpUX5S4ADN.tmp" #<FUNCTION (LAMBDA (UIOP/RUN-PROGRAM::S) :IN UIOP/RUN-PROGRAM::%CALL-WITH-PROGRAM-IO) {10059931DB}> :ELEMENT-TYPE :DEFAULT :EXTERNAL-FORMAT ..
      3: ((FLET "BEFORE77" :IN UIOP/RUN-PROGRAM::%CALL-WITH-PROGRAM-IO) #P"/tmp/tmpUX5S4ADN.tmp")
      4: (UIOP/STREAM:CALL-WITH-TEMPORARY-FILE #<FUNCTION (FLET "BEFORE77" :IN UIOP/RUN-PROGRAM::%CALL-WITH-PROGRAM-IO) {7F39CF47C0DB}> :WANT-STREAM-P NIL :WANT-PATHNAME-P T :DIRECTION :IO :KEEP NIL :AFTER NIL..
      5: (UIOP/RUN-PROGRAM::%CALL-WITH-PROGRAM-IO UIOP/RUN-PROGRAM:VOMIT-OUTPUT-STREAM #<SWANK/GRAY::SLIME-INPUT-STREAM {100405EE03}> T #<FUNCTION (LAMBDA (UIOP/RUN-PROGRAM::REDUCED-INPUT UIOP/RUN-PROGRAM::INP..
      6: (UIOP/RUN-PROGRAM::%USE-LAUNCH-PROGRAM ("sh" "-c" "HOME=/home/bremner; export HOME; cd /home/bremner/; ssh root at minkowski.local \"sh -c \\\"set -e; tmpf=\\\\\\$(umask 077; exec 3>&1; if err=\\\\\\$(if..


As a workaround, I currently store the base64 encoded secret, and run

  (cmd:single "base64plain" "-D" "-o" path base64)

on the target host.

Have I missed a better solution?



More information about the sgo-software-discuss mailing list