Open Source Projects
The Puppet ecosystem includes more than 40 open source projects that are used with Puppet, an open-source configuration management system. Each project adds a capability that system administrators rely on for automating server management.
Sysadmins who use open source Puppet choose the components they need to do their jobs from both the open source projects associated with Puppet, and the more than 2,700 pre-built modules available on the Puppet Forge. Admins who use Puppet Enterprise already have the projects available, fully integrated, security-hardened and tuned for performance.
Some of the major open source projects that are commonly used with Puppet include:
The earliest version of Puppet was created in 2005 by Luke Kanies, founder of Puppet Labs, to easily automate common — and repetitive — system administration tasks. Puppet's easy-to-read, declarative language allows you to state how your systems should be configured to do their jobs — a very different approach from procedural languages that require you to describe the step-by-step process of configuring systems. Using Puppet, any admin or developer can set up systems quickly and move on to the work at hand, without having to know how it gets done.
Puppet's language aids collaboration between members of different technical teams, because it is easily read and understood by human beings who may not be familiar with Ruby or other coding languages.
You can run Puppet on all major Linux or Unix platforms, Mac OS X, and Windows.
More about Puppet
Beaker is a cloud-based acceptance testing harness for Puppet, Puppet Enterprise and other Puppet projects. It can also be used as a provisioner for setting up virtual machines, running any configuration on those machines and then exiting.
More about Beaker
Facter gathers basic facts about nodes (systems) such as hardware details, network settings, OS type and version, IP addresses, MAC addresses, SSH keys and more. These facts are then made available in your Puppet manifests as variables.
Facter is extensible, and it's easy to include your own custom facts or site-specific facts. You can use the facts provided by Facter to inform conditional expressions in Puppet.
More about Facter
Get more information about Facter, including the core facts shipped with Facter and how to create your own custom facts.
Geppetto is an integrated development environment (IDE) for Puppet, providing an easy-to-use toolset for developing and consuming Puppet manifests and modules. Geppetto includes an editor for manifests, another for modules, and an interface to the Puppet Forge so you can create projects from existing modules and easily upload your own custom modules directly to the Forge.
Geppetto was created to make it easier to create manifests; support Puppet best practices for working with modules; and encourage sharing of modules within the Puppet community.
More about Geppetto
Hiera is a key/value lookup tool for configuration data. Hiera keeps your site-specific data separate from modules and manifests, making them easier to construct, read, modify and reuse. With Hiera, it's easy to:
- re-use public Puppet modules by putting necessary data in Hiera, rather than editing module code.
- publish your own modules for collaboration by eliminating the need to clean out data before sharing, and eliminating clashing variable names.
- configure your own nodes by providing multiple levels of overrides for default data.
More about Hiera
Marionette Collective, commonly known as MCollective, is a framework for building server orchestration or parallel job-execution systems. It is normally used to automate execution of administrative tasks on clusters of servers.
The advantages of MCollective come into play when working with large numbers of servers:
- Instead of relying on a static list of hosts, it uses metadata-based discovery and filtering. MCollective can work with PuppetDB, or do real-time discovery across your network.
- Rather than connecting directly to each host, MCollective uses publish/subscribe middleware to communicate with many hosts at once, conserving resources and saving time.
More about MCollective
Many projects, applications and modules rely on PuppetDB, which collects and stores data generated by Puppet, including:
- the most recent facts from every node (system)
- the most recent catalog for every node
- recent event reports for every node
With PuppetDB, you have a huge inventory of metadata about every node in your infrastructure, and a searchable database of every resource managed on any node.
More about PuppetDB
Razor is an advanced provisioning application used to discover and deploy both bare-metal machines and virtual systems. With Razor, you can automate going from a newly racked machine with no operating system to one that's fully installed and managed by Puppet, without any human intervention.
Razor is currently in tech preview, meaning that while it's available both as an open-source project and in Puppet Enterprise, it's not fully certified for production use. Puppet Labs welcomes feedback from Razor users, and is taking that feedback into account as we work to fully develop Razor.
More about Razor
Trapperkeeper is a Clojure framework for hosting long-running applications and services. It provides a super-simple configuration syntax and unified initialization of logging and configuration, plus the ability to:
- configure and control which parts of the system are loaded at run-time
- compose modular bits of functionality
- cohesively manage the lifecycle of application components
- load multiple web apps into a single web server
More about Trapperkeeper
While the Puppet Forge is not an open-source project, it's an important resource for people who use Puppet and Puppet Enterprise. The Forge offers more than 2,700 free open source modules — or pre-written bundles of Puppet code and data — for doing a large number of common tasks.
You can write your own Puppet modules, learning from examples on the Forge — in fact, every Puppet user should expect to write some of their own modules. To get started, learn more about modules and how they work in the documentation on module fundamentals.