Hi all,
Here are our current plans for the Puppet Platform 8 release due out in February 2023. The work for this effort is contained in
https://tickets.puppetlabs.com/browse/PA-4664.
Ruby 3.2Ruby 3.2 should be released December 25, 2022 and we plan to vendor that version in puppet-agent packages. Ruby 3.2 has several notable breaking changes that may affect Puppet extensions, such as functions, custom facts, types & providers, report processors, etc:
* Ruby 3.2 removes some deprecated classes and constants, see
https://github.com/ruby/ruby/blob/v3_2_0_preview3/NEWS.md#compatibility-issues* Ruby 3.2 vendors the ruby/openssl 3.0 gem (ruby bindings for openssl). Several OpenSSL related classes have changed, see
https://github.com/ruby/openssl/blob/master/History.md#version-300* Ruby 3.1 vendors psych 4 (ruby bindings for libyaml), which defaults to safe YAML loading. This means `YAML.load` will not load arbitrary objects or aliases, see
https://bugs.ruby-lang.org/issues/17866Support for Ruby 2.5 and 2.6 will also be dropped.
OpenSSL 3.0OpenSSL 1.1.1 will reach EOL 2023-09-11, therefore, Puppet 8 will vendor OpenSSL 3.0. See
https://www.openssl.org/policies/releasestrat.htmlRuby 3 on WindowsRuby 3 on Windows initializes the default external encoding to UTF-8. Prior to this, Ruby used an encoding corresponding to the active code page, such as Encoding::CP1252. This change may break custom facts and types/providers that shell out or call ANSI versions of Windows APIs. See
https://bugs.ruby-lang.org/issues/13488 and
https://tickets.puppetlabs.com/browse/PUP-11348Legacy FactsBy default, legacy facts will no longer be collected or sent to puppetserver. Also builtin types and providers will no longer use legacy facts to determine provider
suitability. See
https://groups.google.com/g/puppet-dev/c/hFIjgvOa5J0/m/-ROWsGTaBgAJUnchanged Resource ReportingBy default, puppet agents will no longer report on unchanged resources that were successfully managed and "insync". Doing so will dramatically reduce the amount of data sent to puppetserver and stored in puppetdb in the most common case where nothing has changed. See
https://tickets.puppetlabs.com/browse/PUP-11684Deferred FunctionsThe default value for the `preprocess_deferred` setting will be changed to false so that resources with deferred properties follow normal resource relationships and ordering. See
https://puppet.com/docs/puppet/7/configuration.html#preprocess-deferred and
https://tickets.puppetlabs.com/browse/PUP-11526Hiera 3 GemThe hiera 3 gem will no longer be a dependency of puppet and it will no longer be vendored in puppet-agent packages. Note this won't affect Puppet lookup functionality or modules that call the hiera, hiera_include, etc functions. It should only affect users relying on hiera 3 backends that extend the `Hiera::Backend` class. Anyone affected by this change can manually install the hiera gem using the `puppetserver_gem` provider. See
https://tickets.puppetlabs.com/browse/PA-4646Java 8Puppet will drop support for Java 8, as mentioned in
https://groups.google.com/g/puppet-dev/c/yg0YjNwhnTg/m/URqRFzanAgAJPuppet ModulesIn order to test a Puppet module against Puppet 8, you'll need to remove the
puppet-modules-gems dependencies from your Gemfile. This can be done automatically using "pdk update --template-ref 2.7.0" If you're not using the pdk, then look for future communication about how to migrate your modules in preparation for Puppet 8.
Josh