Inside Orchestration with Puppet Enterprise 3.0

The Puppet Enterprise 3.0 orchestration engine provides an important part of the product's cloud automation capabilities. It allows admins to discover and manage thousands of nodes at once from either the Puppet Enterprise web console, or from the command line. Read on to learn how the orchestration engine works and see a video demo of its powerful command functionality in action. At the heart of Puppet Enterprise 3.0's orchestration engine is Marionette Collective (MCollective for short), a framework that drives both the Puppet Enterprise web console's Live Management feature and a powerful command line tool.

Why MCollective?

Speed was an important measure of success for Puppet Labs engineers as they worked on the Puppet Enterprise 3.0 release. Lots of work went into boosting the performance of the Puppet core, providing immediate improvements to how fast Puppet Enterprise runs.

Just as important for judging the success of Puppet Enterprise: how fast it allows its users to work, and how well it scales a single admin's effort. R.I. Pienaar, MCollective's engineering manager, says that kind of scale has been built into the technology since its beginning. "When we initially developed MCollective," he says, "the messaging infrastructure was specifically aimed at solving the problem of dealing with a large number of machines. With one command, you could address many, many machines at the same time." But even though MCollective was designed to work at a relatively large scale, its earliest iterations were built for a different set of demands. "Generally, in the old days," says R.I., "we used to have a very static network. You'd have a bunch of machines installed in a rack. You'd always know which machines you had. They might be named after Greek gods. It was easy to know what you had." The demands of cloud computing have changed the picture dramatically. "As you move to a cloud environment," says R.I., "everything becomes more dynamic."

The Challenges of the Dynamic Cloud

Big organizations that have made their name in the cloud have done so with highly responsive cloud automation. "As demand arrives from the internet, their cloud infrastructure creates new nodes on the fly, and as demand goes away, the infrastructure will shut them down. They're not those unique 'pet' machines that you maintain by hand."

MCollective has changed to deal with this need for flexible provisioning and management. The version that ships with  Puppet Enterprise 3.0 reflects these changes.

"We upgraded the underlying version of MCollective from 1.2 to 2," says R.I., "which saw a huge redevelopment of the messaging infrastructure, so it should be faster and more responsive. We also redeveloped a number of the plugins users might be interacting with to install packages and services and such. They have more consistent output and better error messages." "MCollective, being discovery based, allows you to address your machines based on metadata, such as 'all apache machines' or 'all machines running Debian for customer X,'" says R.I. "It will then query whichever data source you have configured, and return the correct host list. So as your cloud operations change the hosts from underneath you, MCollective is aware of those changes and is able to manipulate [the] actual set of machines." The new version of MCollective also introduces a change that speeds node discovery, providing for a richer set of attributes against which nodes can be queried. "In the version 2.0 redevelopment," says R.I., "we were able to add a 1-to-1 style of communication that allows us to have greater freedom in the source of discovery data that we use. We can use databases, flat files, and the APIs for things like EC2." MCollective can now discover and manage resources much faster, and the list of node attributes it can search for has grown. "By writing simple plugins," says R.I., "you can query any external API just by providing a simple plugin. You can imagine down the line we might query PuppetDB, we might query EC2, or if someone just has a flat file of hostnames they want to use, we'll be able to query that."

Watch a Demo

Hearing about a useful technology isn't as good as seeing it in action. R.I. recorded a demo that demonstrates the power of the Puppet Enterprise 3.0 orchestration engine when it's used from the command line. In the video, you can see R.I. discovering nodes in his infrastructure based on certain characteristics, then see how he uses the orchestration engine's batch capabilities to roll out progressive changes across nodes.

Learn More

Puppet sites use proprietary and third-party cookies. By using our sites, you agree to our cookie policy.