Awesome
Awesome Puppet
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
- Documentation
- Module Management
- Build Tools
- Testing
- 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
- SublimePuppet - Puppet syntax for Sublime
- SublimeLinter Puppet - Sublime Linter plugin for Puppet
- 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
- VSCode
- Puppet plugin - Puppet syntax, code snippets, PDK integration, etc.
- Vim - the ubiquitous text editor
- vim-puppet - provides syntax highlighting and other plugins
Documentation
Libraries for generating project documentation
- HereDoc - HereDoc support for Puppet
- puppet-strings - Current generation documentation from Puppet
- puppetlabs/ntp - reference module for Strings support
Module Management
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.
Build Tools
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
Testing
Testing frameworks
- Rspec Puppet RSpec tests for your Puppet Manifests
- rspec-puppet.com - Official docs
- Beaker Puppet acceptance testing harness
- Kitchen
- Kitchen Puppet
- Using kitchen with puppet
- Onceover Repository testing
Puppet Tools
- 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.
Control Repositories
Reference implementations
- 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.
Learning
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
References
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 (apache::vhost
). - puppetlabs/apache - Testing an ERB template's resulting content
Other Awesome Lists
Other amazingly awesome lists can be found in the awesome-awesomeness list.
Contributing
Your contributions are always welcome!