The following miscellaneous features of Puppet are deprecated, and will be removed in Puppet 4.0.
config_version settings are not allowed in puppet.conf. Environment config sections are not allowed either.
If you are using config file environments, your Puppet masters will log deprecation warnings about it.
The best way to manage environments was unnecessarily complicated and indirect when using config file environments, so we designed directory environments to make that use case simpler.
If the main manifest is set to a directory, Puppet will only load the first level of manifest files in it, ignoring any subdirectories.
Puppet will load manifests from all subdirectories of the main manifest.
Check your main manifest directory and see if there are any subdirectories.
You can see the effects of this change early by setting
parser = future in puppet.conf on your Puppet master(s).
This didn’t make the initial implementation of main manifest directories. Once we decided to add it, we determined that it was a big enough change to wait for 4.0.
If you are using Modulefile for metadata in your modules, its contents will be merged with the metadata.json file during the build process. Only the metadata.json file is used by the Puppet Forge, and we encourage you to remove the Modulefile after building your module.
The metadata.json file will eventually be the only valid source of module metadata. We haven’t yet decided when we’ll remove Modulefile support.
Look for a file named Modulefile in the modules you publish. If any of them contain one, you can convert it to a metadata.json file by doing the following:
puppet module build <MODULE DIRECTORY>once.
A lot of different tools interact with Puppet modules, and some of them aren’t Ruby-based. This makes the Modulefile a poor data format, since it contains raw Ruby code that must be evaluated in order to read it. Plain JSON is much safer and friendlier.
Puppet agent adds a hidden fact named
_timestamp to its request to the Puppet master, and manifests and extensions can access its value. (Puppet apply does not add this fact.)
_timestamp fact is gone.
Puppet will not log deprecation warnings if you are using this fact, but you are almost definitely not using this fact. If you want to check, you can search every text file in your modules for the string
_timestamp. If you are using it, you’ll have to write a custom fact that has a similar value.
Almost nobody knew this existed, its behavior wasn’t specified, and it was implemented in a weird way.
Puppet includes an instrumentation system, which as far as we can tell is not used anywhere.
The instrumentation system will be removed. This includes the
If you’re using the instrumentation system for something, you’ll have to stop. Also, please send a note to puppet-dev so we can find out more about what you’re doing and how to support it better.