[Puppet Users] ANNOUNCE: Puppet 2.7.0 Released

Michael Stahnke
Tue, 21 Jun 2011 18:33:35 -0000

It''s here!  Puppet 2.7.0.

This release is available for download at:
http://puppetlabs.com/downloads/puppet/puppet-2.7.0.tar.gz

It''s available as a gem from rubygems.org.

See the Verifying Puppet Download section at:
http://projects.puppetlabs.com/projects/puppet/wiki/Downloading_Puppet

Please report feedback via the Puppet Labs Redmine site, using an
affected version of 2.7.0
http://projects.puppetlabs.com/projects/puppet/

Full Release Notes are available:
https://projects.puppetlabs.com/projects/puppet/wiki/Release_Notes

To see the Full CHANGELOG:
https://raw.github.com/puppetlabs/puppet/2.7.0/CHANGELOG



Puppet 2.7.0 is out! This is a major feature release, and there''s a
lot of new stuff.  Here''s the high-level version:

Apache License
-----------

Puppet is now released under the Apache 2.0 license. More info is
available
[here](http://docs.puppetlabs.com/guides/faq#change-to-apache-license).

Ruby 1.9 Support
--------

There are some known issues with the 2.7.0 release, but YES: we are
now supporting Ruby 1.9.2 and higher, and will be aggressively fixing
bugs under Ruby 1.9!

Deterministic Catalog Application
-----------

Previously, Puppet didn''t guarantee that it would apply unrelated
resources in any particular order. This meant that if you forgot to
specify some important `before` or `require` relationship, a single
catalog might work fine on eight nodes and then fail mysteriously on
the ninth and tenth. This could be frustrating! Now it''s gone: Puppet
will make sure that the same catalog will always be applied in the
same order on every machine, and it''ll either succeed reliably or fail
reliably. (This change will also be appearing in the final 2.6.x
releases.)

Manage Network Devices
------------

Puppet has new types for managing network hardware, and a new `puppet
device` subcommand for applying these configurations. These are in
their early stages and can currently only handle Cisco hardware, but
they''re the start of a big leap forward in Puppet''s ability to
manage
your entire infrastructure.

Man Pages
--------

We''ve spiffed up our man pages, in both regular and on-the-fly
flavors! Try `man puppet-agent` or `puppet man catalog`, and party
like it''s 1971. (We recommend running `gem install ronn` before using
the `puppet man` subcommand.)

New Subcommands and the Faces API
---------

We''ve added a powerful new API for creating new Puppet subcommands,
and we''ve used it to expose most of Puppet''s internal
subsystems. One
of our devs has written a series of blog posts about it
([one][faceswhat], [two][facesmore], [three][facesthree]), and there''s
more documentation on the way, but this opens the door to whole new
ways of running Puppet and exploiting its data.

To get a look at the new subcommands, just run `puppet help`; if
you''re interested in tweaking Puppet under the hood, take a look at
`lib/puppet/face/secret_agent.rb` to see how easy it is to
re-implement the puppet agent application. We''ve also implemented a
new help interface: just run `puppet help <subcommand> [<action>]`
for
short, to-the-point command-line help with the Faces subcommands.

[facesthree]:
http://www.puppetlabs.com/blog/about-faces-until-we-go-in-the-right-direction/
[faceswhat]:
http://www.puppetlabs.com/blog/puppet-faces-what-the-heck-are-faces/
[facesmore]:
http://www.puppetlabs.com/blog/faces-actions-options-and-facades-oh-my/

Deprecations
----------

We''re starting the hourglass on a few older features:

* **''puppet'' as a synonym for ''puppet
apply''** --- Starting today,
running `puppet my-manifest.pp` will issue a warning; you should start
using `puppet apply` directly instead. Support for implicit invocation
of puppet apply will be dropped in Puppet 2.8.
* **Dynamic scope** --- We''ve started issuing warnings when variables
or resource defaults are found via dynamic lookup. [There''s more info
and explanation in a guide on the docs
site](http://docs.puppetlabs.com/guides/scope_and_puppet.html), but
the short version is that you should start referencing variables with
their qualified names instead of counting on dynamic scope. We hope to
drop support for dynamic scope in Puppet 2.8.
* **No more `--parseonly` option** --- This one''s already gone,
because we used Faces to build a drop-in replacement: use `puppet
parser validate [<manifest>] [<manifest> ...]` instead.

Notice Changed Manifests on the First Try
-------

During the 2.6.x series, puppet agent would sometimes require two runs
to receive new configurations when puppet master was running under
Passenger. This persistent bug has been dealt with. (This change will
also be appearing in the final 2.6.x releases.)

Static Compiler
---------

We''ve introduced `static_compiler`, a new `catalog_terminus` which can
be configured in puppet.conf on your puppet master. There are some
known issues that keep it from being used as-is --- you have to
manually sync the agent''s filebucket to that of the master, and the
compiler''s behavior around recursion hasn''t been rigorously
tested.
But this new approach has the potential to drastically speed up
file-heavy Puppet runs and eliminate some race conditions.

Improved APIs
----------

You can now [manage and sign certificates via Puppet''s REST
API](http://docs.puppetlabs.com/guides/rest_api.html#certificate-status),
which means that in the near future you''ll be able to check off
signing requests for new nodes right from Puppet Dashboard. (And
someone can now easily write an iPhone or Android app to fetch and
handle CSRs, hint hint. :) )

And more
--------

For more detail, see [our full release
notes](http://projects.puppetlabs.com/projects/puppet/wiki/Release_Notes/).