Puppet 0.25.0 Release Candidate 1 released!
After a lot of work, a small mountain of commits, and a lot of testing and
wrangling we’ve got the first 0.25.0 release candidate out. You can read all
about 0.25.0RC1 here and you can see what else is new and changed below:
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): New Language
Features ** Regular expression matching is now possible in node definitions.
node /web|db/ { include blah }
node /^(foo|bar)\.example\.com$/ { include blah }
Puppet now also allows regular expressions in if statements with the
use of the =~ (match) and !~ (not match) operators. if $uname =~ /Linux|Debian/ { ... }
Also available are ephemeral variables ($0 to $9) in
the current scope which contain regex captures: if $uname =~ /(Linux|Debian)/ { notice("this is a $1 system") }
Similar functionality is available in case
and selector statements: $var = "foobar" case $var { "foo": { notify { "got a foo": } } /(.*)bar$/: { notify{ "hey we got a $1": } } }
val = $test ? { /^match.*$/ => "matched", default => "default" }
New functions ** There
are three new functions: require - Similar to the include function but creates
a dependency on the required class in the current class. This means the
required class will be loaded before the current class is processed. split -
allows you to split strings and arrays versioncmp - allows you to compare
versions Command Line Compile & Apply ** Puppet now has the capability to
compile a catalogue and output it in JSON from the Puppet master. You can do
this via the –compile command line option. # puppetmasterd –compile
nodename Corresponding with this feature is the ability to apply a JSON
configuration from the puppet binary using the –apply option. # puppet --apply cataloguefile
Or you can use - to read the JSON in from standard
input. Puppet will then compile and apply the configuration. ** Thin
Stored Configuration 0.25.0 also introduces the concept of “thin” stored
configurations. This is a version of stored configuration that only stores the
facts and exported resources in the database. This will perform better than
full stored configuration but because not all resources are available this may
not suit all purposes. Thin stored configurations are initiated by setting the
thin_storeconfigs option on the Puppet master or on the puppetmasterd command
line using –thin_storedconfigs. 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 on the Puppet Wiki. 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. Other features You can find a full list of the tickets closed
thus far for version 0.25.0 is here.