(Re-)Introducing the Puppetlabs-Registry Module
The puppetlabs-registry module is fairly mature, having been first published back in early 2012. So why are we talking about it now? It is among the first batch of modules officially supported for use with Puppet Enterprise!
While Puppet Enterprise has always included some supported modules, we added full support for a new assortment of widely used modules in the Puppet Enterprise 3.2.0 release. It's the first wave of our ongoing supported module program, in which we’ll continue providing full Puppet Enterprise testing, integration and support for a growing library of Forge modules that help our customers get their work done.
The puppetlabs-registry module provides a set of types and providers that let you use Puppet to create and manage Windows Registry keys. Custom types for the management of keys and values are included, as well as a defined type that allows for the management of key/value pairs and automatic handling of parent keys. The module also includes another defined type that is specifically designed for managing services on a Windows system via the Registry keys that define them. In short, the module allows you to bring much more of your Windows configuration under one roof.
One example of how you might use this module is to lock down the Protected Mode feature of Adobe products, such as Acrobat Reader 11, to prevent end users from disabling this security feature. By default, Protected Mode sandboxing of PDF processing is enabled in this version, but may be freely disabled by the end user.
Adobe provides instructions for locking down this configuration option via a Registry entry in the Acrobat Application Security Guide. To do this using Puppet, we can use a resource like the following:
When this is applied on a Windows host we’ll see output like this during the run:
The presence of the new Registry key can be verified in the Registry Editor:
Next time we launch Acrobat Reader, we can check out the preferences and see that the option to disable Protected Mode sandboxing is now greyed out, so end users cannot readily bypass this security feature.
Another use case for the registry module is the management of Windows service entries. A defined type,
registry::service, is built into the module to easily create and manage the Registry keys you need. Let’s say you’ve created a wrapper for an application, and want it to be installed as a service that starts automatically at boot-up. A resource like the following can be used to get the service set up on Windows hosts:
When it’s applied during a run we’ll see output like this:
Checking out the Registry, we can see that the requisite entries now exist:
After a restart, our new service shows up under Services in the management console:
Those two examples show off a pair of common uses for the module, but that’s just scratching the surface. For additional examples and an exhaustive description of the module’s capabilities, check it out on the Puppet Forge: puppetlabs-registry
Ken Johnson works in technical operations at Puppet Labs.
- You can see all the Puppet Enterprise supported modules here, and keep track of new ones as we add them.
- Read other supported-module blog posts with use cases and example code: puppetlabs-ntp, puppetlabs-apache and puppetlabs-postgresql.
- Puppet Enterprise 3.2 offers plenty of added goodness in addition to supported modules.
- You can download Puppet Enterprise for Windows and try it out for free.