A curated list of amazingly awesome puppet resources inspired by @bayandin's awesome-awesomeness.
Your pull requests are very welcome! Let's make this the awesomest resource for Puppet!
- Integrated Development Enviroments
- Module Management
- Build Tools
- Puppet Tools
- Learning Resources
- Other Awesome Lists
Integrated Development Enviroments
IDEs and Editors for development
- Atom - The hackable editor by GitHub
- Puppet plugin - The Puppet plugin for Atom
- Sublime - Non-FOSS text editor for MacOS X
- Textmate - FOSS text editor for MacOS X
- Puppet Bundle - Textmate bundle for Puppet
- RubyMine - Code editor for Windows/Mac/Linux (not free or FOSS)
- Puppet language support plugin - also compatible with other editors
- Puppet plugin - Puppet syntax, code snippets, PDK integration, etc.
- Vim - the ubiquitous text editor
- vim-puppet - provides syntax highlighting and other plugins
Libraries for generating project documentation
- HereDoc - HereDoc support for Puppet
- puppet-strings - Current generation documentation from Puppet
- puppetlabs/ntp - reference module for Strings support
Libraries for module management
- Librarian Puppet - Flexible module management for your puppet repository
- Puppet Blacksmith - Ruby Gem with several Puppet Module utilities used for easily publishing modules to the forge
- Hiera-Regex - Regex backend for Hiera data.
- Modulesync - Synchronize consistent settings across modules in a user or organization namespace (not PDK compatible).
- modulesync_config reference - Reference modulesync configuration repo.
- pdksync - Use PDK to synchronize multiple module repositories.
Libraries for building and task running
- Puppet Lint Check that your Puppet manifest conform to the style guide
- puppet-lint-action GitHub Action for interacting with Puppet Lint
- Rspec Puppet RSpec tests for your Puppet Manifests
- rspec-puppet.com - Official docs
- Beaker Puppet acceptance testing harness
- Kitchen Puppet
- Using kitchen with puppet
- Onceover Repository testing
- Puppet Bolt A Ruby command-line tool for executing commands, scripts, and tasks on remote systems using SSH and WinRM. Great for 'ad hoc' task execution. Bolt tasks can be written in any scripting/programming language (Also known as puppet tasks).
- Puppet Development Kit A toolkit for puppet module developers
- puppet-retrospec - Generates puppet rspec test code based on the current code inside your module.
- puppet-ghostbuster - Finds dead code by displaying unused classes, defined resources, template and files. Requires puppetdb 3+.
- puppet-debugger - A interactive live debugger and REPL for the puppet language
- puppet-function-updater - A tool that helps port legacy Puppet functions to the modern Ruby API.
- puppetlabs/control-repo - Official reference architecture from Puppet, based on Even Besterer Practices.
- PSICK A reusable Puppet control repository using many of what are considered best practices.
- puppetlabs-education/classroom-control-vf - A good reference implementation of the control repository, maintained by Puppet's Education group.
- puppetinabox/controlrepo - Rob Nelson's control repository for his PuppetInABox project.
Resources for new puppet users
- Puppet Learning VM A simple VM that gives you a set of challenges to learn puppet by doing.
- Puppet Cookbook, a collection of task oriented solutions in Puppet.
- YAML for Puppet users? - A combination YAML primer and Guide to Puppet/YAML idiosyncracies.
- Introduction to Testing Puppet Modules (and video) by David Schmitt
- Hands-on Lab - with solutions - Official lab material used in paid Puppet Practitioner training - by Puppetlabs
- Unit Testing
rspecfor Beginners - A blog post from Puppet into Getting Started with
- Bolt Hands-On Lab - Learn how to write Tasks and Plans.
Active code references representing various design patterns and usage
- puppetlabs/httpd - Beaker tests in Travis.
- Resource API - Examples of Types & Providers.
- puppetlabs/java's java_version - Writing a custom fact in ruby.
- puppetinabox puppet_role fact and test - Testing of a custom fact.
- puppetlabs/apache's defined type apache::vhost - Include a dependency (
apache) during unit testing of another resource (
- puppetlabs/apache - Testing an ERB template's resulting content
Other Awesome Lists
Other amazingly awesome lists can be found in the awesome-awesomeness list.
Your contributions are always welcome!