Puppet Server: Known Issues
For a list of all known issues, visit our Issue Tracker.
Here are a few specific issues that we’re aware of that might affect certain users:
Ruby 1.8 vs Ruby 1.9
Puppet Server uses an embedded JRuby interpreter to execute Ruby code. This interpreter is compatible with Ruby 1.9. If you are installing Puppet Server on an existing system with Ruby 1.8, the behavior of some extensions, such as custom functions and custom resource types and providers, might change slightly. Generally speaking, this shouldn’t affect core Puppet Ruby code, which is tested against both versions of Ruby.
tmp
directory mounted noexec
In some cases (especially for RHEL 7 installations) if the /tmp
directory is
mounted as noexec
, Puppet Server may fail to run correctly, and you may see an
error in the Puppet Server logs similar to the following:
Nov 12 17:46:12 fqdn.com java[56495]: Failed to load feature test for posix: can't find user for 0
Nov 12 17:46:12 fqdn.com java[56495]: Cannot run on Microsoft Windows without the win32-process, win32-dir and win32-service gems: Win32API only supported on win32
Nov 12 17:46:12 fqdn.com java[56495]: Puppet::Error: Cannot determine basic system flavour
This is caused by the fact that JRuby contains some embedded files which need to be
copied somewhere on the filesystem before they can be executed
(see this JRuby issue). To work
around this issue, you can either mount the /tmp
directory without
noexec
, or you can choose a different directory to use as the temporary
directory for the Puppet Server process.
Either way, you’ll need to set the permissions of the directory to 1777
. This allows the Puppet Server JRuby process to write a file to /tmp
and then execute it. If permissions are set incorrectly, you’ll get a massive stack trace without much useful information in it.
To use a different temporary directory, you can set the following JVM property:
-Djava.io.tmpdir=/some/other/temporary/directory
When Puppet Server is installed from packages, add this property
to the JAVA_ARGS
and JAVA_ARGS_CLI
variables defined in either
/etc/sysconfig/puppetserver
or /etc/default/puppetserver
, depending on
your distribution. Invocations of the gem
, ruby
, and irb
subcommands
use the updated JAVA_ARGS_CLI
on their next invocation. The service will
need to be restarted in order to re-read the JAVA_ARGS
variable.
Diffie-Helman HTTPS Client Issues
SERVER-17: When configuring Puppet Server to use a report processor that involves HTTPS requests (e.g., to Foreman), there can be compatibility issues between the JVM HTTPS client and certain server HTTPS implementations (e.g., very recent versions of Apache mod_ssl). See the linked ticket for known workarounds.
Uberjar Leiningen Version Issues
If you try to build an uberjar on your own, you need to use leiningen 2.4.3
or later. Earlier versions of leiningen fail to include some of JRuby’s
dependencies in the uberjar, which can cause failures that say
Puppet::Error: Cannot determine basic system flavour
on startup.
OpenBSD JRuby Compatibility Issues
SERVER-14: While we don’t ship official packages or provide official support for OpenBSD, we would very much like for users to be able to run Puppet Server on it. Current versions of JRuby have a bug in their POSIX support on OpenBSD that prevents Puppet Server from running. We will try to work with the JRuby team to see if they can get a fix in for this, and upgrade to a newer JRuby when a fix becomes available. It might also be possible to patch the Puppet Ruby code to work around this issue.
Puppet Server Master Fails to Connect to Load-Balanced Servers with Different SSL Certificates
SERVER-207: Intermittent SSL connection failures have been seen when the Puppet Server master tries to make SSL requests to servers via the same virtual ip address. This has been seen when the servers present different certificates during the SSL handshake. For more information on the issue, see this page.