Lockless code deploys
The lockless code deploys feature within Code Manager allows deployment of Puppet code without interrupting other Puppet operations. When this feature is disabled, requests to Puppet Server are blocked during code deployments until the file sync client has finished updating the live Puppet code directory, However, when lockless code deploys are enabled, the file sync client saves newly deployed code into versioned directories, ensuring that the live code directory is not overwritten. This process allows Puppet operations to continue without interruption during code deployments.
With lockless code deploys, each new deploy writes code to versioned directories at:
/opt/puppetlabs/server/data/puppetserver/filesync/client/versioned-dirs/puppet-code/
When the feature is enabled, the Puppet Server code directory is
set up at /etc/puppetlabs/puppetserver/code
and points,
via symlink, to the most recent versioned code directory (at the versioned directories
filepath specified above). If you disable lockless deploys, your code directory moves to
/etc/puppetlabs/code
.
Lockless deploys enable you to deploy a new version of code alongside an old version.
When a catalog compiles starts, it uses the full path to the most recent version of code
in the versioned code directory (via the /etc/puppetlabs/puppetserver/code
symlink). Existing catalog compiles
continue using the version they started on and new compiles use the latest code
version.
To conserve disk space, code written to versioned directories is optimized to reduce
duplication, and directories older than the latest and its predecessor are cleaned up
after 30 minutes. If you deploy code very frequently, you might prefer to decrease the
versioned-dirs-ttl
setting, which is specified, in
minutes, in file-sync.conf
within each file sync
client.