Resolved issues

An environment reloaded during a single compilation could fail

Previously, Puppet Server could reload an environment while it was being used to compile a catalog. If translations were enabled (Puppet[:disable_i18n] set to false), compilation could fail. Now Puppet Server prevents environments from being reloaded while they are in use, and instead reloads the environment the next time it is requested. PUP-11158

Catalog failure on first run due to pluginsync and environment switch

Previously, an agent failed its run if it switched to a new environment where the manifests relied on a fact that only existed in the new environment. Now the agent redirects to the server-specified environment and the run continues using that environment. PUP-9570

Changes to current working directory when listing modules

Puppet Server and agent no longer change their current working directories when listing modules in an environment directory. PUP-11166

Static catalogs not working for file resources when versioned_deploys is enabled

Previously, when :versioned_environment_dirs was set to true, catalog compilation failed to add metadata for static catalog file resources; this meant that an agent receiving a catalog would not attempt to request that static file content. This has been fixed and the metadata is now correctly added to the catalog when :versioned_environment_dirs is set to true. PUP-11169

Agent cannot compile catalog if it specifies an non-existent environment in puppet.conf

This release fixes an issue that caused the agent run to fail if the agent requested an environment that did not exist on the server ​​— even when the classifier controlled the environment. PUP-6802

Rich data types can corrupt the transaction store

This release fixes an issue that prevented Puppet from reporting corrective changes when using rich data types such as Deferred, Binary, and Sensitive. PUP-10820

Environment caches string and symbol environment names differently

This release fixes an issue that resulted in Puppet caching duplicate copies of an environment. PUP-10955

Failure to fetch node definition results in bad pluginsync and cascading failure

Previously, Puppet agents would make a node definition request to the server to find out the correct environment to run in. This request has now been removed, and the agent saves its last used environment in the last_run_summary.yaml file. If the environment is not set in the CLI or config, agents attempt to use the environment in last_run_summary.yaml — only if the previous run had an agent/server environment mismatch. PUP-10216

Puppet.lookup(:current_environment) is wrong if the environment changes during convergence

This release fixes an issue where an old environment could be used if the environment had changed due to pluginsync. PUP-10308

User resource exposes hashed password when changing password or adding a user

Previously, when managing passwords with the useradd provider, the password hash appeared when listing running processes. Now the password is set with the chpasswd command that uses stdin to receive the password from a temporary file, so it no longer appears in the process list. PUP-3634

The launchd service provider fails if a parsable but invalid LaunchAgent or LaunchDaemon plist file exists

This release fixes an issue where the launchd service provider failed if a parsable but invalid LaunchAgent or LaunchDaemon plist file exists. PUP-11164

The pkg provider cannot unhold and update package in the same run

Previously, the pkg package provider was unable to handle manifests where a package was updated and marked as unhold at the same time. This is now fixed. PUP-10956

Undefined method '[]' for nil:NilClass when handling SemanticPuppet::Dependency::UnsatisfiableGraph

Previously, the puppet module install command broke when dependencies could not be resolved. Puppet now emits an error message instead. PUP-11172