Puppet 4.0 Release Notes
This version of Puppet is not included in Puppet Enterprise. The latest version of PE includes Puppet 4.4. A newer version is available; see the version menu above for details.
These are the release notes for Puppet 4.0, released April 15 2015. There’s a lot of information here so it’s organized top to bottom by size of impact – things everyone is going to notice will be at the top and minor bugfixes/improvements are down at the bottom.
BREAK: Changes to Platform Support, Repos, and Installation
All-in-One Packaging
The first thing you’ll notice is that the packaging has changed pretty dramatically. Puppet had gotten complicated enough, and the systems it runs on diverse enough, that it became really difficult to provide the proverbial “one-click install” through our Linux-distribution style packaging. For Puppet 4, we’ve gone to an All-In-One package (which we refer to as “AIO”, like a bad hand in Words With Friends), which includes Puppet 4, both Facter 2.4 and CFacter 0.4, the latest Hiera and Mcollective, as well Ruby 2.1.5, OpenSSL 1.0.0r, and our gem dependencies. The package installs into its own area in /opt/puppetlabs and is named puppet-agent so it will not auto-upgrade existing systems with the puppet package installed (it will, however, replace them if you opt-in to the upgrade).
- PUP-4003: Puppet 4.0.0 should update to MCO 2.8.0 and Hiera 2.0.0
- PUP-3848: Puppet 4.0.0 should update Ruby to 2.1.5 and Facter to 2.4.0
- PUP-4005: AIO agent CSR extension not compatible with current puppetserver packages
- PUP-3843: Remove PE / FOSS branching (and branding) logic from puppet_for_the_win
- PUP-4018: Execute puppet AIO acceptance against puppetserver
- PUP-4019: Add agent role back to the master
- PUP-4034: Update MSI for AIO
- PUP-4037: Windows AIO path changes
- PUP-3986: Expand predefined OID’s for Puppet’s extension attributes
- PUP-4009: Add Cfacter 0.4.0 to Windows MSI
- PUP-3920: Update Puppet to use HI 2.0.0
- PUP-4199: config.ru is missing codedir argument
- PUP-4355: Update per-user directories to ~/.puppetlabs
- PUP-4189: Add all per-user directories to file_paths specification
BREAK: New Locations for Important Files and Directories
Related to the AIO packaging changes, there are new locations on the filesystem for the binaries, configuration, and code. The goals were to make a unified filesystem layout for all Puppet/PE installations and to enable continuous-deployment workflows with r10k. There’s a separate top-level guide which summarizes the changes.
- PUP-3809: Separate code (content?) and configuration directories for AIO packaging
- PUP-3846: Puppet 4.0 MSI Changes - Windows Unified Installer
- PUP-3632: Update paths and defaults for the unified FS layout
- PUP-3944: Make sure puppetdb.conf is under $confdir
- PUP-4001: Packaging should create default module directories for puppet
The End of Ruby 1.8.7
One of the benefits of the All-in-One packaging is no longer being dependent on the version of Ruby provided by the different operating system. This let us consolidate on a fast, stable, modern version – Ruby 2.1.5 – across all operating systems (including Windows) and remove a ton of hacky work-arounds left over from the Ruby 1.8.7 days.
If you’re using the AIO packaging, the whole Puppet toolset (facter, mcollective, etc) will all work out of the box; if you’re running from gem or source, however, make sure you’re running a recent Ruby interpreter.
- PUP-3776: Upgrade Windows Ruby to 2.1.5
- PUP-1805: Drop Ruby 1.8.7 support
- PUP-2411: Remove 1.8.7 multibyte string support in Lexer2
- PUP-2563: Remove 1.8.7 support in the ruby code base
- PUP-2412: Remove 1.8.7 function API support
OS Support
- PUP-3553: Remove support for OSX versions <= 10.6 this mostly relates to setting user passwords and managing services.
BREAK: Next Version of Puppet Language
By far the most significant user-facing change in Puppet 4 is the completely rewritten parser and evaluator, which are the parts of Puppet that take your modules and transform them into a catalog for each node that checks in. This was originally introduced as an opt-in “Future Parser”, and over the last year, community feedback, user research, and engineering time have honed the Future Parser to the point where it’s no longer in the realm of the future – it’s here.
The rewritten parser includes new capabilities like iteration and type-checking for variables as well as deprecations and changed behaviour. Most notably, the stricter, more predictable parsing of numbers, empty strings, and “undef”/”nil” comparisons may cause changes to a node’s catalog without necessarily producing an error.
- PUP-410: Complete Implementation of Language based on the EGrammar
- PUP-3274: Remove old parser/evaluator
- PUP-3133: Decide on the specification of Integer/Float runtime types
- PUP-3002: Better report invalid resource attribute errors
- PUP-3680: The parameter order on the hash type is inconsistent
- PUP-3240: Remove ignoreimport setting (import was removed in future parser in 3.5.0, see PUP-490)
- PUP-494: Make future parser/evaluator have acceptable performance
- PUP-3701: Issue with empty export resources expression in the Puppet future parser
- PUP-3718: defined function does not handle qualified variable names correctly
BREAK: Directory Environments Replace Config File Environments
Starting with Puppet 3.6, Directory Environments started taking over from Dynamic Environments as Puppet’s mechanism for serving different versions of modules and code. In Puppet 4, they’re the default and other environment support is gone. Read more about directory environments in the environments section of the docs.
- PUP-3268: Remove non-directory environment support
- PUP-3567: Remove current_environment check in Puppet::Indirector::Request#environment=
- PUP-4094: Default environment_timeout should be 0, not infinity.
- PUP-4067: Create production environment directories in packaging
- PUP-4083: Add sample environment.conf to puppet
BREAK: Removed Puppet Kick, ActiveRecord, and Inventory Service
There’s been a lot of accumulated technical debt in Puppet’s code base: old features which were deprecated but never removed, half-implemented experiments, and interested things that turned out to be really bad ideas. Almost 60,000 lines of code have been removed from the repository, comprising things like the pre-PuppetDB stored configs, puppet kick, and an unsupported CouchDB facts terminus.
- PUP-862: Remove deprecated items for the Puppet 4 release the epic for a bunch of the above.
- PUP-2560: Remove inventory service on the master
- PUP-2559: Remove couchdb facts terminus and associated settings
- PUP-3249: Remove async_storeconfigs and queue service on the master see summary in the old deprecations pages. actually that holds true for most of the above.
- Puppet kick:
- PUP-3267: Remove puppet kick and related agent functionality
- PUP-3269: Remove network access to the Resource indirection
- PUP-405: Remove ActiveRecord stored configs
- PUP-2560: Remove inventory service on the master
- PUP-4074: Remove master settings from puppet.conf
BREAK: HTTP API Changes
An important set of changes in Puppet 4 involve the URLs the agents and master use to communicate with one another over the network. We’ve standardized the endpoints onto the same namespaced, versioned standard as other Puppet projects like PuppetDB, which should make for much better compatibility guarantees. A side effect of this, however, is that currently Puppet 3 agents cannot talk to Puppet 4 masters; this compatbility layer will be introduced in Puppet-Server 2.1. See the upgrade docs for servers and agents for step-by-step instructions to safely update your existing infrastructure.
- PUP-3641: Changes to Puppet URL structure
- PUP-3519: Scope URL rework
- PUP-3826: Update API docs for Puppet 4 URL changes
- PUP-3851: Remove v2.0 endpoints
- PUP-3921: Craft 404 error message that includes verbiage about Puppet 4 URL changes
- PUP-3642: Remove environment name from URL path
- PUP-3644: move all legacy and v2.0 endpoints to v3
- PUP-3645: allow configurable URL prefix for all routes
- PUP-3526: re-structure CA REST API
- PUP-3812: Modify file_bucket_file API to use “application/octet-stream” instead of “text/plain” for Content-Type
- PUP-3855: auth.conf no longer restricting based on environment
- PUP-3958: Puppet agent requests do not include the X-Puppet-Version header
- PUP-3355: Remove PSON document_type
New Language Features
In addition to the core language changes, there are some new functions available along with a new function API that’s written on top of the 4.x parser. No longer will you have to restart a long-running puppetmaster to get it to pick up new versions of your function code! One of the coolest built-in functions is “EPP”, or Embedded Puppet, which enables inline and file-based templates similar to ERB (Embedded Ruby) but written in the Puppet Language directly. This helps reduce the cognitive dissonance of switching back and forth between the Puppet Language and Ruby (“Are my variables prefixed with dollar signs or not?!”) and lets you use the Puppet’s tooling for templates as well as your manifests. Read more about EPP in the function reference guide.
- PUP-2904: Make string/symbol use consistent in new function API
- PUP-2531: Provide validation tool for EPP
Changes to support Puppet Server and CA
- PUP-3676: Avoid OpenSSL::X509::Name calls in ssl.rb for Puppet Server
- PUP-3522: Ruby OpenSSL executed implicitly in JVM-Puppet by loading Puppet/Util module
- PUP-4194: Puppet’s logdir permissions prevent puppetserver service start
- PUP-3520: Move the Puppet extension OIDs definitions
- PUP-3986: Expand predefined OID’s for Puppet’s extension attributes
- PUP-2995: Proposal for custom trusted oid mapping file
- PUP-3560: Add support for properly signed trusted facts
- PUP-3352: Always attempt to use HTTP compression
BREAK: Changed Defaults for Settings
- PUP-2253: Enable manifest ordering by default
- PUP-1035: Default setting for pluginsource problematic for deployments using SRV records
BREAK: Puppet Doc and Tagmail Removed from Core, Released as Modules
For users of puppet doc, check out the new puppetlabs-strings module on the Forge. puppet doc relied on RDoc behaviours which broke in newer Ruby versions. Similarly, the tagmail report processor didn’t work under Puppet Server and it seemed like a good candidate to move into a modules, so it’s available at puppetlabs-tagmail on the Forge.
- PUP-3463: Remove tagmail https://forge.puppetlabs.com/puppetlabs/tagmail
- PUP-3638: Remove the manifest handling code from the util/rdoc parsers.
Internal Cleanups and Dead Code Removal
Nearly all users can ignore these removals, but we’re including them for completeness’s sake.
- PUP-880: Remove “localconfig” Setting
- PUP-3627: Remove ignored certdnsnames setting
- PUP-3295: Remove “metaparam_compatibility_mode”
- PUP-2953: “masterlog” setting is dead code
- PUP-3433: Remove defunct code from Puppet::Util::Autoload
- PUP-3370: Remove serialization of indirector requests
- PUP-1019: Remove ZAML
BREAK: Resource Types/Providers With Changed Behavior
- PUP-3719: Group resource non-authoritative by default
- On the SUSE family of Linuxes, the default package provider is now zypper instead of rug. PUP-2728: zypper should always be the default package provider for Suse osfamily
- PUP-2613: Change source_permissions default to :ignore
- PUP-2609: Don’t allow source_permissions to be set to anything other than ignore on Windows
- PUP-3280: Remove msi provider
- PUP-3305: Change allow_virtual default to true
- PUP-1244: Yum provider using “version-release” to validate installation. this is a long-running bug where ensure => “version of package, but without the -release suffix” would cause errors. the break is that some version comparisons might go differently, now.
- PUP-2576: Implement behavioral change in the crontab provider to allow more drastic purging
- PUP-2350: Remove support for non-string mode of file type
- PUP-2967: Remove recurse => inf
- PUP-3308: Remove deprecation warning about cron purge change
- PUP-1106: Resource refreshes don’t check for failed dependencies. Prior to Puppet 4.0, refresh events generated by subscribe or notify would be applied without regard to tag filters, failed dependencies or schedules.
BREAK: Internal API and Implementation Changes
These changes affect Puppet’s internal Ruby methods and libraries. Their removal should affect either no one, or a small number of extension authors.
Most of these changes remove code that was previously deprecated.
- PUP-2965: Remove Puppet::Plugins
- PUP-3229: Remove deprecated methods in Puppet::Settings::BaseSetting
- PUP-3281: Remove latest_info methods from yum provider
- PUP-3684: Remove deprecated methods from Puppet::Settings and Puppet::Module
- PUP-3311: Remove deprecated methods from Puppet::Provider
- PUP-3293: Removed unused pson and rubygems features
- PUP-3298: Remove Puppet::Util::SUIDManager.run_and_capture
- PUP-3299: Remove deprecated Puppet::Util::CommandLine methods
- PUP-3303: Remove deprecated binread implementations
- PUP-3306: Remove deprecated Puppet::SSL::Inventory#serial method
- PUP-3307: Remove parameter from Puppet::Type#remove
- PUP-3312: Remove deprecated code from the Puppet module
- PUP-3313: Remove deprecated puppet_lambda method
- PUP-3270: Remove deprecated Puppet::Application methods
- PUP-3271: Remove filebucket support for pson
- PUP-3273: Remove Puppet::FileCollection
- PUP-3275: Remove from_pson
- PUP-3276: Remove deprecated methods from Puppet::Util::Windows::*
- PUP-3289: Remove deprecated serialization and dynamic facts settings
- PUP-3290: Remove script support from Puppet::Interface::ActionManager
- PUP-3291: Remove autoloader from Puppet::Interface
- PUP-2558: Remove instrumentation system
- PUP-3294: Remove support for :parent in the custom type and provider API.
- PUP-3296: Remove handling and mention of :before and :after for parameters
Stuff a lot of people will notice
A lot of these changes codify defaults changes that were deprecated or on-the-way in Puppet 3.x but couldn’t flip over to be the default except on a semver major number boundary. For example, the stringify_facts setting (which causes the agent to submit all Facter facts as strings) is gone, because non-stringified-facts are now the default. Similarly, the Modulefile which described puppet module metadata was deprecated in 3.5 in favour of the metadata.json file, and now the transitional support for it is gone completely.
Module authors who use the prefetch method in custom providers may want to be aware of the changes in PUP-3656. Two things to consider:
- Previously, the prefetch method could throw any exception and puppet would carry on. As discussed above this is the wrong behavior in general, however some module authors may have stumbled across this, allowed/encouraged prefetch to throw exceptions, and let puppet runs succeed. So modules should be examined for this assumption.
- The only two legitimate causes for prefetch to throw an exception now are
LoadErrorand (added in this puppet 4.0)Puppet::MissingCommand
- PUP-3096: trusted_node_data option should go away (should be always-on)
- PUP-3678: Invalid module name .DS_Store error running puppet apply “Specifically, modules installed in the modulepath will not be recognized as module directories if they have a - in the directory name. I believe this is in line with our docs, but because we have permitted otherwise in the past, some people may have abused the leniency.”
- PUP-2966: Remove stringify_facts option (should never stringify)
- PUP-3372: Remove extlookup function
- PUP-3924: Remove the hiera “puppet_backend”
- PUP-3282: Remove support for method access of variables in ERB templates
- PUP-3656: Prefetch eats most exceptions (those derived from StandardError), there is no way to fail out.
- PUP-3063: Remove certification expiration check from puppet-4
- PUP-3508: simplify/move warn_if_near_expiration
- PUP-3510: delete for 4.0 afaict, we just decided this isn’t necessary. there’s no signal so far on whether we want other tools for checking expiry times.
- PUP-3254: Remove all Modulefile functionality in PMT except warnings about ignoring
- PUP-777: Remove ‘versionRequirement’ per code comment
Stuff nearly nobody will notice
- PUP-1467: DIE :undef, DIE!
- PUP-2741: remove the ‘search’ function
- PUP-3250: Remove secret_agent
- PUP-987: Remove Ruby DSL support
- PUP-3272: Remove support for yaml on the network
notably,
report_serialization_formatsetting is gone. - PUP-3260: Remove RRD functionality from Puppet rrd metrics graphing, and the rrdgraph report processor
- PUP-3130: Remove “hidden” $_timestamp fact
- PUP-779: Remove deprecated process execution methods in util
- The
libdirsetting can only be set to a single directory. Previously, you could set it to a list of directories, but only when using Puppet as a library. This was usually used for testing modules with multiple dependencies. If you need to do this in Puppet 4 or later, you should manipulate Ruby’s$LOAD_PATHinstead. PUP-3336: Puppet is inconsistent about :libdir setting when multiple paths provided
CLI, Faces, and Logging Improvements
- PUP-3140: Illegal number error should include the faulty number
- PUP-1103: puppet commands should respond correctly to –help
- PUP-1426: Destructive puppet cert operations should have a safety check
- PUP-3119: Puppet resource should be able to output yaml format for create_resources. (pull request provided)
- PUP-3700: Faces should remove invalid actions instead of just documenting them as invalid
- PUP-3838: puppet console output for warning is red, which is unnecessarily alarming
- PUP-2927: Facter logs should be surfaced during Puppet runs
- PUP-3376: Make the windows puppet service daemon use the configured log_level setting
- PUP-2998: Allow log_level option to be specified in configuration file in addition to command line
- PUP-3624: Running with –test should run with at least info level
- PUP-3756: Don’t try to chown log file destination when non-root
- PUP-3521: puppet incorrectly swallows some errors
- PUP-3754: Better logging when fail to set ownership
- PUP-3081: reported catalog run time is wildly inaccurate
- PUP-3706: console format should pretty print nested structures
- PUP-3698: Make find into the default action for the facts face
Bug Fixes
- PUP-3245: Function calls no longer showing up in profile data
- PUP-3167: node namespaces override class namespaces if they happen to match
- PUP-3228: “{}” in systemd service files cause services to fail to start
New Deprecations
- PUP-3654: Deprecate Puppet.newtype
- PUP-3512: Add deprecation warning for old profiler API in Puppet
- PUP-3666: Replace ‘configtimeout’ with separate HTTP connect and read timeout settings
Regression: --profile flag produces less information
In Puppet 4, functions converted to the Puppet 4 function API were not included in the profiling information produced by the --profile flag. This caused the profiling output to produce less information than in Puppet 3. Puppet 4.3.2 restores this missing information.
Regression: Resource collectors can’t use resource references
Puppet 4.0 introduced a regression where resource collectors using resource references would produce an error. Puppet 4.3.2 fixes that regression.
Resource Type and Provider Improvements
The biggest change in this category is PUP-1073, which implements a long-standing feature request. The Type docs have the details, but now you can, for example, have the same package name like “mysql” managed by two separate resources, one for the gem version and one for the RPM version.
- The [
yumrepotype][type_yumrepo] now includesassumeyes,deltarpm_percentage, anddeltarpm_metadata_percentageattributes. PUP-3024: yumrepo: add setting deltarpm_percentage, PUP-2923: Add assumeyes attribute to yumrepo - PUP-1413: Support touch command for augeas type
- PUP-1362: Rubyize yumhelper.py to remove dependency on python
- PUP-3492: Puppet should allow Upstart service provider for Linux Mint
- PUP-3322: Add additional debugging to appdmg provider
- PUP-3338: Systemd should be the default service provider for OpenSuSE >= 12 and SLES 12
- PUP-3695: yum provider handling for –disableexcludes in :install_options
- PUP-3750: The mailalias type should allow the specification of included files
- PUP-1073: Support common package name in two different providers
- PUP-4237: Add puppet_gem provider for managing puppet-agent gems
- PUP-2452: Add reinstallable feature on package type
- PUP-3753: Improve performance of zfs checks.
Resource Type and Provider Bugs
Some of these are subtle, some more in-your-face, but for the most part these bugfixes caused Puppet to behave slightly differently – better, but differently – and therefore had to wait for Puppet 4.0 to see the light of day.
- PUP-3787: puppet resource file ‘mode’ parameter is 3-digit notation instead of 4-digit
- PUP-1208: md5lite, mtime not honoured for file type/provider
- PUP-3887: Server should use agent specified checksum
- PUP-3888: Fix puppet apply writing source to file when using non-md5 checksum type
- PUP-3889: Fix puppet agent writing source to file when using non-md5 checksum type
- PUP-3898: Fix writing content to file with non-md5 checksum type
- PUP-3945: Fix puppet apply/agent when recursively copying a directory
- PUP-3890: Fix mtime/ctime checksum type
- PUP-3899: Write acceptance tests
- PUP-4012: parsed provider destroys file if a line starts with uppercase Q
- PUP-900: noop => true is ignored when resource is triggered by other resource
- PUP-3346: curl allows –insecure SSL connections for mac package providers.
- PUP-3373: ‘mount’ resource with list of mount options only applies the first option
- PUP-1244: Yum provider using “version-release” to validate installation. this is a long-running bug where ensure => “version of package, but without the -release suffix” would cause errors.
- PUP-1270: ‘pkg’ package provider does not understand IPS package versions properly
- PUP-1293: service status is ignored ( puppet 3.2 + upstart provider )
- PUP-3128: (PR 3003) Pacman provider does not work on manjaro linux
- PUP-3564: pkg provider latest gives empty warnings
- PUP-1085: Pacman provider constantly reinstalls package groups on arch linux
- PUP-3861: Yum provider cannot parse long package names
- PUP-2289: Puppet will purge the /etc/hosts if it have some invalid lines
- PUP-4191: Custom gem provider does not issue the right command to uninstall gem
- PUP-3388: Issue Creating Multiple Mirrors in Zpool Resource
On OpenBSD
Thanks to Jasper Lievisse Adriaanse and Zach Leslie for these changes to help Puppet work better on BSDs.
- PUP-3243: There’s no way the ‘bsd’ service provider will work on OpenBSD
- PUP-3605: Puppet doesn’t remove users from groups on OpenBSD
- PUP-3939: Update OpenBSD service provider to support new syntax of rcctl
- PUP-3144: Rewrite OpenBSD service provider with rcctl(8)
- PUP-3736: OpenBSD service provider should restart a service when flags are changed
- PUP-3723: Add support for setting a user’s login class – only affects openbsd for now. new
loginclassattribute.
On Windows
On Windows, group resources now respect the auth_membership attribute, which lets you control whether members is the complete list of members or a minimum list of members. (Previously, Puppet ignored this attribute on Windows.) Note that the default value of this attribute has also changed; see the breaking changes section on resource types.
Weekly scheduled_task resources would attempt to set the trigger on every run, due to part of the trigger being compared to the wrong thing. This is fixed.
- PUP-2628: Ability to add a member to a group, instead of specifying the complete list
- PUP-3429: Weekly tasks always notify ‘trigger changed’
- PUP-2647: Windows user provider reports that the password is created instead of changed
- PUP-2609: Don’t allow source_permissions to be set to anything other than ignore on Windows
- PUP-1276: Tidy causes ‘Cannot alias’ ArgumentError exception on Windows
- PUP-1802: Puppet should execute ruby.exe not cmd.exe when running as a windows service
- PUP-3247: Win32::TaskScheduler#trigger_string doesn’t work
- PUP-3724: Use ffi 1.9.6 for Ruby 2.1 in puppet-win32-ruby
- PUP-3837: Work around Ruby string encoding behavior exercised during registry calls in win32/registry
- PUP-3842: Ensure that Puppet 4 FOSS MSI includes MCO
- PUP-3844: Puppet MSI filename should be puppet-agent.msi by default
- PUP-3845: Windows Unified Installer should track internal component versions
- PUP-3951: Prefer api_types.read_wide_str(length, encoding) in Windows calls
Puppet Language, Hiera, and Function Features
- PUP-1515: When compiling a catalog, providers should be loaded from specified environment
- PUP-1601: functions accepting regexp string should also accept Regexp
- PUP-3462: Hiera scope: add the key ‘calling_class_path’
- PUP-4046: hiera_include broken
- PUP-4070: Deep merge options cannot be passed as options map.
- PUP-4081: lookup should lookup in module when looking up qualified names
- PUP-4132: Pass merge strategy to Hiera using Indirector::Request options
- PUP-4133: Future parser error when interpolating name segment starting with underscore
- PUP-4205: Puppet 4 lexer fails to parse multiple heredocs on the same line
- PUP-3949: Update docs for application/octet-stream and binary Accept value
New Features in Resource Type and Provider API
Miscellaneous Improvements and Bug Fixes
- PUP-3379: Bring back retry action and fix up
- PUP-1635: “current thread not owner” after Puppet Agent receives USR1 signal
- PUP-3935: Pluginsync errors when no source is available and modulepath directory is a symlink
Miscellaneous New Features
Performance Improvements
- PUP-3436: Optimize CPU intensitive compiler methods
- PUP-659: Qualified variable lookups are very slow under Puppet 2.7+ unless prefixed with ::
- PUP-3389: Significant delay in puppet runs with growing numbers of directory environments
New Feature: Data Binder
- PUP-1640: Provide agnostic mechanism for Hiera Based Data in Modules
- PUP-3948: Let lookup be the impl for agnostic lookup of data
- PUP-3900: Data providers cannot be added in modules
- PUP-4016: Consider short circuiting data binding if lookup is called as the default value
Preparations for Facter 3.0
Module Tool Improvements
- PUP-3569: module skeleton should not require rubygems
- PUP-3962: Test for module directories starting with ‘.’
- PUP-3894: Default license for module metadata does not match an identifier provided by SPDX
- PUP-3981: Missing PMT Acceptance Test for Building Module with a Modulefile
- PUP-3121: Puppet module generate - dependency problem
- PUP-3168: Fix all file permissions on puppet module install
- PUP-3124: tool should generate code using the actual module name as the directory instead of username-modulename
- PUP-3082: Error in puppet module skeleton
- PUP-3568: module skeleton should use puppet-lint v1
Administrivia, Testing, Docs and Specs, Packaging, Internal Clean-ups
- PUP-2733: Puppet squats on the PuppetX::Puppetlabs and PuppetX::Puppet namespaces
- PUP-3393: relationship_spec.rb has minor bugs
- PUP-3457: Puppet::Util::Execution.execute should not switch uid if it already matches the euid
- PUP-3488: Stop overwriting the agent’s facts timestamp
- PUP-2909: Incorporate linting and static verification with rubocop
- PUP-3239: Add a validate method to Puppet::Node::Environment so the Compiler can easily halt for environments with bad configuration.
- PUP-3997: Audit and update puppet acceptance tests that assume the puppet user and group are present
- PUP-3912: Update specs to rspec 3
- PUP-3300: Rework Puppet::Util::Checksums to not extend itself
- PUP-3475: Plan transition to JSON
- PUP-3511: Refactor Application.run() for external reuse
- PUP-3609: Partial revert of PUP-2732
- PUP-3982: Ensure puppet service supports conditional restart
- PUP-2716: ssl_server_ca_chain and ssl_client_ca_chain are dead settings the settings were never enabled, the commented-out rough versions were deleted, and other code was referring to values that would never be set. No user-facing impact.
- PUP-4004: Remove acceptance workaround that creates the puppetserver cache related directories
- PUP-2948: Enable rubocop for PRs in Github
- PUP-2950: Enable rubocop:Style/AndOr for pops
- PUP-3013: Add acceptance test for PMT build command changes for 3.7
- PUP-3061: Upgrade win32-eventlog to 0.6.2+
- PUP-3835: Specify that variables are case sensitive
- PUP-2366: Replace hosts using Ruby 1.8.7 for Puppet 4.0 Acceptance
- PUP-3779: Verify spec tests in dev env for Ruby 2.1.5
- PUP-3780: Verify Ruby 2.1.5 compatibility on Windows 2003
- PUP-3816: Verify correct gems are in puppet-win32-ruby 2.1.5-x86 and 2.1.5-x64 branches
- PUP-2343: IPS acceptance tests should be confined to solaris-11 only
- PUP-2346: Acceptance tests cannot depend on ‘readlink’ or ‘stat’ on Solaris 10
- PUP-3076: Solaris (10) acceptance tests assume that /opt/csw/bin (opencsw) is in the path (necessary for solaris 10)
- PUP-3818: Execute Windows acceptance pre-suite against Ruby 2.1.5
- PUP-3915: Remove win32console for Windows Ruby 2.1.5 this was only needed if you were running under 1.9.x, which we don’t anymore.
- PUP-3479: Windows ffi dependency fails for Ruby 2.1.3
- PUP-3850: Two User provider spec tests fail on RedHat systems
- PUP-3954: Determine failure for already_installed_elsewhere.rb acceptance test
- PUP-3137: expiry parameter definition in user resource documentation needs update
- PUP-3070: Include indent file in vim-puppet
- PUP-3003: Windows MSI contains unneeded files
- PUP-3016: tests/modules/install/with_version.rb assumes
puppetis on the path - PUP-3603: Update language spec with new String to Float behavior in PUP-3602 and PUP-3615
- PUP-4033: add puppet-agent path acceptance tests
- PUP-4152: Try Debian 8 32-bit
- PUP-4153: Try Debian 8 64-bit
- PUP-4171: Try Fedora 20 32 bit
- PUP-4172: Try Fedora 20 64 bit
- PUP-4173: Try Fedora 21 32 bit
- PUP-4174: Try Fedora 21 64 bit
- PUP-4232: add acceptance tests for lookup()
- PUP-2699: Puppet specs on windows triggers “Excluding C from search path. Fact file paths must be an absolute directory”
- PUP-4011: Spec test failure on ruby 1.8.7: ProviderSystemd should not be the default provider on rhel4
- PUP-3969: Puppet acceptance tests need auditing to derive ‘host’ and ‘group’ using the Beaker ‘puppet’ helper
- PUP-4056: Audit acceptance tests for assumed ruby location
- PUP-4093: Try out puppet acceptance against aio packages for non-el7 linux platforms
- PUP-3960: Presence of createrepo not checked by acceptance/rpm_util.rb
- PUP-3549: Debian init script status and stop actions are unsafe
- PUP-3010: Allow Upstart jobs on Amazon Linux
- PUP-3166: Debian service provider on docker with insserv (dep boot sequencing)
- PUP-3090: Packaging for puppet masters should include always_cache_features set to true.
- PUP-4340: source_attribute acceptance test failing intermittently
- PUP-4057: Acceptance tests should not rely on the puppetpath beaker option
- PUP-4150: Puppet-Agent Acceptance on RHEL5/6 failed
- PUP-4330: Remove Puppet dependency on facter/util/plist.
- PUP-4088: update puppet-agent path acceptance for Windows 2003 and 32-bit app on 64-bit OS
Wontfix
- PUP-2701: Add acceptance tests for PMT build metadata.json support
- PUP-3015: Add acceptance test for PMT search command changes for 3.7
- PUP-528: Line number information missing from 3x AST transformer errors
- PUP-3371: Ensure PSON parser only creates safe Hash and Array object types
- PUP-3470: Syntax error in test suite on Ruby <= 1.8.7-p352
- PUP-524: Complete Testing of Relationships
- PUP-739: Profile agent with complex catalog
- PUP-742: Identify components involved in puppet runs
- PUP-743: Retrieving a resource from a catalog
- PUP-2304: Implement “requirements” support for the PMT
- PUP-2694: Scope replacing webrick with a rack-based lightweight server, e.g. thin
- PUP-1119: List known environments on CLI
- PUP-1149: Show environment information on CLI
- PUP-3554: Validate all of the forge modules using future parser
- PUP-3188: Puppet module tool no longer processes files starting with a period as erb
- PUP-1263: Synonyms (title, namevar, name) make it confusing.
- PUP-2105: Puppet config face and the –configprint option operate directly on environment.conf.
Duplicates
- PUP-3297: Remove deprecated Puppet::Settings::BaseSetting methods
- PUP-3824: Ruby 2.1.5 - Puppet-Win32-Ruby - Clean Docs and Fix bin files
- PUP-280: Variables outside of class definition in module does not produce error when running puppet apply
- PUP-3225: Remove legacy and dynamic environment support.
- PUP-3499: Remove deprecated ‘templatedir’ setting
- PUP-3499: Remove deprecated ‘templatedir’ setting
- PUP-3942: Make sure classifier.yaml is under $confdir
- PUP-3943: Make sure console.conf is under $confdir
- PUP-3310: Remove warning for copying owner/group to windows
- PUP-3292: Remove Modulefile support
- PUP-2804: Remove deprecation warnings introduced into Windows code during FFI