Puppet 5 is released and comes with several exciting
enhancements and features that promise to make configuration management much
more streamlined. This article will take a comprehensive look at these new
features and enhancements.
Puppet 5 was
released in 2017, and according to Eric Sorensen, director of product
management at Puppet, the goal was to standardize Puppet as a one-stop
destination for all configuration management requirements. Here are the four
primary goals of this release:
- To standardize the version numbering of all the major Puppet components (Puppet Agent, PuppetDB, and Puppet Server) to 5, and deliver them as part of a unified platform
- To include Hiera 5 with eyaml as a built-in capability
- To provide clean UTF-8 support
- To move network communications to fast, interoperable JSON
Customer feedback
Customer and
community feedback played a major role in setting the goals for Puppet 5’s
release, having helped the developers with identifying and defining certain
patterns, such as:
- Different version numbers across components were a huge source of confusion
- There was a lot of chaos when it came to combining components to get a working installation as well as where each component would fit
- Since both Facter 3 and PuppetDB 3 seamlessly rolled into PC1, guaranteeing a new Puppet Collection for every major release didn’t make much sense
However, the
makers ensured that one critical aspect didn’t get affected: Modules that worked on Puppet 4 will work
unchanged under Puppet 5.
New features
Puppet 5 comes
with some power-packed new features; have a look:
- The
call
function: Thecall (name, args,…)
function has been added, which allows you to directly call a function by its name - The
unique
function: Earlier, you had to include thestdlib
module to include the unique function. None of those hassles anymore! Theunique
function is now directly available in Puppet 5. What’s more, the function is also capable of handlingHash
andIterable
data types. In addition, you can now also give a code block that determines whether the uniqueness has been computed. - Puppet Server request metrics: Puppet
Server 5 now comes with am http-client metric
puppetlabs.
to enable the tracking of how long Puppet Server requests to a configured HTTP report processor take..http-client.experimental.with-metric-id.puppet.report.http.full-response
Enhancements
Time to take a
look at some exciting new enhancements that come with Puppet 5:
- Switched from PSON to JSON as default: Agents now download node information, catalogs, and file metadata, by default, in JSON instead of PSON in Puppet 5. The move to JSON ensures enhanced interoperability with other languages and tools, while also enabling better performance, especially when the master is parsing JSON facts and reports from agents. Plus, JSON-encoded facts can also be easily accepted in Puppet 5.
- Ruby 2.4: Puppet now uses Ruby 2.4,
which ships in the
puppet-agent
package. All you have ensure is to reinstall user-installed Puppet agent gems after upgrading to Puppet agent 5.0. This is necessary because of the differences in Ruby API in Ruby 2.1 and 2.4. Further, some gems may also need to be upgraded to versions compatible with Ruby 2.4. - HOCON gem is a dependency now: The HOCON
gem, which was previously shipped in
puppet-agent
package is also now a dependency of the Puppet gem. - Silence warnings with metadata.json: You
can now turn off warnings from faulty metadata.json by setting
--strict=off
. - Updated Puppet Module Tool dependencies:
The gem dependencies of Puppet Module Tool are updated to use
puppetlabs_spec_helper
1.2.0 or later, which runsmetadata-json-lint
as part of thevalidate
rake task. - Hiera 5 default file: Default Hiera
5-compliant files go into
confdir
andenv-directory
. Puppet creates appropriate v5 hiera.yaml in$confdir
and$environment
Moreover, if Puppet detects a hiera.yaml in either$confdir
or$environment
, it won’t install a new file in either location or remove$hieradata
.
Performance boosts
All these
enhancements and new features have contributed to ushering performance boosts
in a lot of aspects. The runtimes of Puppet 5 agent have decreased by 30% at
equivalent loads (that is, from an average of 8 seconds to 5.5 seconds). In
addition CPU utilization of Puppet 5 server has reduced by at least 20% as
compared to Puppet 4 in all scenarios, while the CPU utilization for Puppet 5
PuppetDB and PostgreSQL have also significantly reduced in all scenarios.
Catalog compile
times of Puppet 5 reported by Puppet Server have reduced by 7% to 10% compared
to Puppet 4. Puppet 5 can now scale to 40 percent more agents with no deterioration
in runtime performance, whereas Puppet 4 agent runtimes were disastrously long
when scaled to the same number of agents.
If you liked this article and want to learn more about
Puppet 5, you can explore Puppet 5 Cookbook – Fourth Edition. This book takes you from a basic knowledge
of Puppet to a complete and expert understanding of Puppet’s latest and most
advanced features. Puppet 5 Cookbook – Fourth Edition is for anyone who builds and administers
servers, especially in a web operations context.
( This sponsored post is part of a series designed to highlight recently published Packt books about leading technologies and software applications. The opinions expressed are solely those of the author and do not represent the views of GovCloud Network, GovCloud Network Partners.)
( Thank you. If you enjoyed this article, get free updates by email or RSS - © Copyright Kevin L. Jackson 2016-2018)