1 Commits

Author SHA1 Message Date
unkinben 5e8cff921c vault: keep systemd-tmpfiles from reaping openbao plugin sockets
ci/woodpecker/pr/ruby-validate Pipeline was successful
ci/woodpecker/pr/puppet-lint Pipeline was successful
ci/woodpecker/pr/yamllint Pipeline was successful
ci/woodpecker/pr/bolt-validate Pipeline was successful
ci/woodpecker/pr/erb-validate Pipeline was successful
ci/woodpecker/pr/epp-validate Pipeline was successful
ci/woodpecker/pr/ruby-check Pipeline was successful
ci/woodpecker/pr/puppet-validate Pipeline was successful
go-plugin gives each secrets plugin a control socket at /tmp/pluginNNN.
The daily systemd-tmpfiles-clean deletes /tmp files older than the OS
policy, which severs the socket of a long-lived plugin while its process
keeps running. Every request then fails with rpc Unavailable / dial unix
/tmp/pluginNNN: no such file, until a plugin reload respawns it. This hit
the litellm engine (terraform-vault#112) but the risk is shared by every
OpenBao plugin (gpg, rancher, gitea, ...).

Ship a tmpfiles.d exclude (x /tmp/plugin*) on all vault servers so plugin
sockets survive the cleaner. Takes effect on the next clean, no restart.

Claude-Session: https://claude.ai/code/session_01JUoARVdmhxKQHyyyp1pxeT
2026-08-06 22:31:58 +10:00
+9
View File
@@ -122,6 +122,15 @@ class profiles::vault::server (
]
}
# go-plugin creates each secrets plugin's control socket as /tmp/pluginNNN;
# systemd-tmpfiles-clean reaps files aged past the /tmp policy, severing the
# socket of a long-lived plugin and orphaning the still-running process
# (every request then fails: rpc Unavailable, dial unix /tmp/pluginNNN: no
# such file). Exclude the sockets from cleaning for all plugins.
systemd::tmpfile { 'openbao-plugin-sockets.conf':
content => "x /tmp/plugin*\n",
}
# ensure the vault audit log exists
file { $audit_log:
ensure => 'file',