Puppet modules are designed to be self-contained bundles of code, wrapping up into a single package all the classes, files, and templates having to do with any one component. This means that the Puppet Apache module will manage only Apache, and the MySQL module will manage only MySQL.
But a lot of components have dependencies. For example, many modules will reuse resources from the
puppetlabs-firewall module to create rules allowing network access, or they'll use resources from
puppetlabs-concat to build configuration files. That's traditionally made it a little difficult to manage your development environment, since each module needed access to all of its dependencies for testing, and it's left up to you, the programmer, to go look up the documentation for each resource type you want to use.
JetBrains is changing that with their recently announced RubyMine 2017.1 EAP release, containing a new feature, Puppet Project Structure. (RubyMine, in case you don't know about it already, is a Ruby and Rails integrated development environment (IDE).) The new dependency management features allow you to install the proper version of each dependency of your module using the existing
metadata.json file inside a module or the
Puppetfile in an environment, and then use the resource types within the dependencies to provide intelligent code completion as you work.
This uses the open source
librarian-puppet tool, which manages all dependencies recursively, so it will minimize the administrivia headaches you must deal with. Head on over to the JetBrains blog and read Artem Sarkisov's post about the new release, or just sign up for the early access program and try out Puppet Project Structure for yourself.
Ben Ford is a principal training solutions engineer at Puppet.
- Read Artem Sarkisov's original blog post, RubyMine 2017.1 EAP: Puppet Project Structure.
- Learn more about the JetBrains Early Access Program.
- Haven't tried Puppet Enterprise yet? You can download the Learning VM for free and get a hands-on experience. Also, you can use Puppet Enterprise on 10 nodes for free.