homeblogpuppet learning vm new lesson architecture

Puppet Learning VM: a new lesson architecture

Last week we released a new version of the Puppet Learning VM, with a complete rewrite of the lesson content. The new content covers a few new topics in configuration management, such as the roles and profiles pattern and the Embedded Puppet (EPP) template format. The main change, however, is in the architecture of the lessons.

The previous version of the Learning VM focused on writing Puppet code. All the code was demonstrated by applying it directly on the Learning VM itself. The new version also teaches you how to write Puppet code, but it offers a much more complete context to help you understand how your Puppet infrastructure fits together. At the beginning of each lesson, the Learning VM’s quest tool creates the set of simulated agent systems your Puppet code will manage during that lesson.

You can find the new VM at https://puppet.com/download-learning-vm.

Looking back, it’s been almost a year since we began working on the technical and content changes for this rewrite. At that point, the lessons in the Learning VM’s Quest Guide were pretty solid. Though we ran into technical issues with the VM itself from time to time, feedback on the actual lessons was overwhelmingly positive, and it took a lot of great feedback from the community to get there.

So why rock the boat? To put it briefly, the Learning VM seemed to be doing a great job teaching what it was teaching, but what it was teaching wasn’t quite right. There was too much focus on writing Puppet code, and not enough coverage of the architecture and patterns involved in actually managing systems with Puppet.

When I get started learning a new tool or technology, I invariably run into something I think of as the context gap. Learning how to hold a paint brush is easy. Putting paint on canvas in a way that an art collector might appreciate is hard. Learning how to write a for loop in Javascript is easy. Learning the frameworks and libraries you’ll likely use (Webpack, ES6, Browserfy, React, Gulp, AJAX or Fetch, to name just a few) to get that for loop into a modern web app is hard. While we’re at it, what about setting up a development environment, configuring an IDE, and checking your code into version control?

These peripheral skills and tools are often context-sensitive, involve many components, cover multiple domains of expertise, and evolve quickly as updates are released or fashions shift. These challenges already make a topic harder to wrap your head around, and the issue is compounded by the fact that the same challenges make it more difficult for those who create content to document and teach this kind of skill.

This difference between learning a single well-defined tool in a well-defined context, and the messy reality of the actual skills needed to apply this tool in the real world, leads to a common gap: “Okay, I know what this is, but how do I get it to actually solve my problem?”

Puppet is no exception. If we limit our scope to something simple like writing Puppet code, everything is pretty straightforward. When you start looking for ways to actually incorporate that code into a reliable workflow and architecture to manage your infrastructure, however, things can get complex very quickly.

The changes we’ve made to the Learning VM are nothing close to a silver-bullet solution to this problem, but I hope that providing a more realistic learning environment will prove an important step in that direction. But of course, this is just a first step. Building the Learning VM has always been a collaborative process, not just within our team at Puppet, but with a community that consistently uncovers issues and offers feedback. As always, we invite you to get in touch with us at learningvm@puppet.com, and share any feedback you have or issues you encounter.

Kevin Henner is a senior training solutions engineer at Puppet.

Learn more

  • Try out the new Learning VM, or send the link to a friend.
  • Visit our learning page for more information on other avenues for learning Puppet, or getting Puppet certified.