Puppet Server
Puppet Server is the next-generation application for managing Puppet agents.
This platform will carry Puppet's server-side components to a more
distributed, service-oriented architecture. We've built Puppet Server on top of the
same technologies that have made PuppetDB successful, allowing us to
greatly improve performance, scalability, advanced metrics collection,
and fine-grained control over the Ruby runtime.
While Puppet Server is meant to replace an existing
Apache/Passenger Puppet master stack, there are a handful of differences
due to changes in the underlying architecture. Please see Puppet Server vs. Apache/Passenger Puppet Master for details.
Installing Puppet Server
Puppet Server depends on Puppet 3.7.3 or later, so if you install it on a system running an older version of Puppet, installation will also upgrade Puppet itself. Please see Installing Puppet Server from Packages for complete installation requirements and instructions.
Ruby and Puppet Server
Puppet Server 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.
Puppet Server uses its own JRuby interpreter, which doesn't load gems or other code from your system Ruby. If you want Puppet Server to load any additional gems, use the Puppet Server-specific gem command to install them. See Puppet Server and Gems for more information about gems and Puppet Server.
Configuration
Puppet Server honors almost all settings in puppet.conf and should pick them
up automatically. However, we have also introduced some new Puppet
Server-specific settings---please see the [Configuration]
(./documentation/configuration.markdown) page for details. For more information
on the specific differences in Puppet Server's support for puppet.conf
settings as compared to the Ruby master, see the [puppet.conf differences]
(./documentation/puppet_conf_setting_diffs.markdown) page.
Certificate Authority Configuration
Much of the existing documentation on External CA Support for the Ruby Puppet Master
still applies to using an external Certificate Authority in conjunction with Puppet Server. There are some differences to bear in mind, however; see the External CA Configuration page for details.
SSL Configuration
In network configurations that require external SSL termination, you need to do a few things differently in Puppet Server. Please see the External SSL Termination page for details.
CLI Commands
Puppet Server provides several command-line utilities useful for development
and debugging purposes. These commands are all aware of puppet-server.conf
and the gems and Ruby code specific to Puppet Server and Puppet, while keeping
them isolated from your system Ruby.
For more information, see Puppet Server Subcommands.
Known Issues
As this application is still in development, there are a few known issues that you should be aware of.
Developer Documentation
If you are a developer who wants to play with our code, these documents should prove useful:
Branching Strategy
The Branching Strategy for Puppet Server is documented on the wiki here.
Issue Tracker
Feature requests? Found a bug? Want to see what issues are currently in flight? Please visit our Jira project.
License
Copyright © 2013 -- 2014 Puppet Labs
Distributed under the Apache License, Version 2.0
Special thanks to
Cursive Clojure
Cursive is a Clojure IDE based on
IntelliJ IDEA. Several of
us at Puppet Labs use it regularly and couldn't live without it. It's got
some really great editing, refactoring, and debugging features, and the author,
Colin Fleming, has been amazingly helpful and responsive when we have feedback.
If you're a Clojure developer you should definitely check it out!
JRuby
JRuby is an implementation of the Ruby programming language
that runs on the JVM. It's a fantastic project, and it is the bridge that allows
us to run all of the existing Puppet Ruby code while taking advantage of all of
the advanced features and libraries that are available on the JVM. We're very
grateful to the developers for building such a great product and for helping us
work through a few bugs that we've discovered along the way.