PuppetDB includes a remote REPL interface, which is disabled by default.

This is mostly of use to developers who know Clojure and are familiar with PuppetDB’s code base. It allows you to modify PuppetDB’s code on the fly. Most users should never need to use the REPL, and it should usually be left disabled for security reasons.

Redefining Functions

You can also manipulate the running PuppetDB instance by redefining functions on the fly. Let’s say that for debugging purposes, you’d like to log every time a catalog is deleted. You can just redefine the existing delete-catalog! function dynamically:

Note that any changes you make to the running system are transient; they don’t persist between restarts of the service. If you wish to make longer-lived changes to the code, consider running PuppetDB directly from source.