Puppet 0.25.0beta1 released!

The beta1 release of Puppet 0.25.0 has been released! This is a big woot! This represents a mountain of work for Luke and a number of contributors to Puppet (including me! :P). It’s been about 18-24 months in the making since Luke first started tossing ideas around and cutting code. We’re not fully there yet. This is a beta release after all but it’s well on the way and with sufficient testing we should get a release candidate out within the month I hope. For those of you who are interested the tarball is available here and here are some notes about it:

Puppet 0.25.0beta1

This is not production ready code - it is a beta release for testing. The beta is largely feature complete and the extent of testing and issues will determine how soon we move to a release candidate. So we would ask everyone to test and report issues with the beta. Please log any issues found during testing here. Please select the Affected Version as 0.25.0. Please email any other specific questions, comments or feedback to the puppet-user list.

What’s Changed?

There are substantial changes in Puppet 0.25.0 and more changes to come in the future. Most of the changes in 0.25.0 are internal refactoring rather than behavioural. The 0.25.0 release should be fully backwards compatible behaviourally with the 0.24.x branch. This means a 0.25.0 master will be able to manage 0.24.x clients. You will need, however, to upgrade both your master and your clients to take advantage of all the new features and the substantial gains in performance offered by 0.25.0. The principal change is the introduction of Indirected REST to replace XML-RPC as the underlying Puppet communications mechanism. This is a staged change with some functions migrated in this release and some in the next release. In the first stage of the Indirected REST implementation the following functions have been migrated: - Certificates - Catalogue - Reports - Files In 0.26.0 (the next release) the following remaining functions will be migrated: - Filebucket - Resource handler - Runner handler - Status handler The new REST implementation also comes with authorisation configuration in a similar style to the namespaceauth used for XML-RPC. This new authorisation is managed through the auth.conf file (there is an example file in the conf directory of the tarball). This does not yet fully replace the namespaceauth.conf file but will when the remaining handlers are migrated to REST. It works in a similar way to the namespaceauth.conf file and the example file contains additional documentation. As a result of the introduction of REST and other changes you should see substantial performance improvements in this release. These particularly include improvements in: - File serving - The performance of large graphs with lots of edges - Stored configuration (see also Puppet Queuing below) Other new features include (this is not a complete list - please see the Roadmap for all tickets closed in this release):

Puppet Queuing

There is a new binary called puppetqd that supports queuing for stored configurations. You can read about how it works and how to implement it here. Further documentation is in the README.queuing file in the tarball.

Application Controller

All the logic has been moved out of the binary commands and added to an Application Controller. You can see the controller code at lib/puppet/application.rb and the logic for each application at lib/puppet/application/binaryname.rb.

Binary Location Move

To bring Puppet more in line with general packaging standards the puppetd, puppetca, puppetrun, puppetmasterd, and puppetqd binaries now reside in the sbin directory rather than the bin directory when installed from the source package.

Version Compare function

There is a new function called versioncmp

Other features

You can find a full list of the tickets closed thus far for version 0.25.0 here.