This page lists the changes in Puppet 5.1 and its patch releases. You can also view current known issues in this release.
Puppet’s version numbers use the format X.Y.Z, where:
- X must increase for major backwards-incompatible changes
- Y can increase for backwards-compatible new functionality or significant bug fixes
- Z can increase for bug fixes
If you’re upgrading from Puppet 4.x
Read the Puppet 5.0 release notes, because they cover breaking changes since Puppet 4.10.
Released August 17, 2017.
This is a feature and improvement release in the Puppet 5 series that also includes several bug fixes.
Packages have been added in this release for:
- Debian 9 “Stretch”
Puppet now supports module localization! You may have noticed some modules now have translated READMEs and
metadata.json fields. The next step is translating certain log messages. This change modifies Puppet so that it is capable of consuming and displaying these log translations as they become available across modules.
New data type
The data type
Init[T] has been added to the type system. This type matches a value that is a valid argument to
T.new. The addition of this type is an enabler for features such as automatic data type conversion.
tree_each has been added to allow convenient iteration, filtering, mapping, and reduction over complex structures. This function iterates recursively in a way that flattens a structure into a sequence, but that sequence retains information about the structure, making it possible to put it back together with possibly altered values. This was a difficult operation to do in Puppet language earlier and required a user to write a custom recursive function to achieve the same result.
all have been added to Puppet. They iterate over something iterable and can test if there is at least one element for which a lambda returns a truthy value (
any) or if the lambda returns a truthy value for all elements (
puppet master command now listens on both IPv4 and IPv6.
NOTE: On macOS, the
puppet mastercommand may not work correctly. This can be fixed by setting
"::", depending on if you want to listen on IPv4 or IPv6.
Timestampdata type could not correctly parse a string where date and time were separated by space. A new default format that allows this was added.
A regression introduced with Hiera 5 caused the setting of
data_binding_terminus=noneto turn off the
hiera_xxxfunctions in addition to the expected disablement of Automatic Parameter Lookup (APL) from the global layer. This is now changed so that the
hiera_xxxcalls continue to work. The
lookupfunction continues to return the same result as APL (if the terminus is disabled, then global hiera is also turned off for lookup, while APL and lookup from environment and module layers is still enabled). The
data_binding_terminussetting is planned to be deprecated and removed along with the Hiera 3 support in a future release. With the speedups and new features in Hiera 5, there should be no reason to turn off the
Timestampwas created from a string with trailing unrecognized characters, there would be no error and the produced
Timestampwould be based on only the recognized part. This now instead raises an error.
Dots in package names would cause Puppet to incorrectly parse the version and architecture of a package.
pipcommand is now fully qualified on Windows to disambiguate between implementations.
An issue where some commands run via
execor in providers would be prevented from running by selinux - because Puppet would redirect their output to a file in
/tmp. Puppet now uses a pipe to get stdout from the executed process. This has one known side effect: on Windows if a Puppet agent run is killed, a new agent run will be prevented from starting by Puppet’s lockfile until any subprocesses started by the previous agent run have completed.
Puppet now provides a more accurate error message when a service resource lookup finds multiple versions of the resource.
The Pip package provider’s
ensure=latestis now done with pip, so it can be done with custom PyPI repositories.
Puppet could in some circumstances end the application of a catalog with the error
Cannot convert Puppet::Util::Log to integer- this problem masked the real problem that Puppet tried to log information about.
Overriding attributes of user defined resources after the resources have been evaluated leads to an inconsistent catalog in that the parameters shown are not the actual values used to produce the content of the resource. Now, the
--strictflag helps find and correct these issues in manifests. A setting of
--strict=offcontinues to behave as it did, a
--strict=warningissues a warning for each override, and
--strict=errorcauses the compilation to fail.
The gem provider now passes along the