/puppetserver

Server automation framework and application

Primary LanguageClojureApache License 2.0Apache-2.0

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 & 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:

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.