One of Puppet’s big strengths over the past decade has been the idea of model-driven automation. With Puppet, you model the desired end state of your infrastructure and Puppet does the hard work of continually enforcing that state on your behalf. It's powerful enough that the idea of idempotent desired state has become the standard way in which everyone expects new config management tools to work.
But as we've talked to many of you about how Puppet fits in with your day-to-day work and how we can continue to help level-up your skills, we realized that we need to evolve how Puppet works. As our community, customer, and partner ecosystem have extended Puppet to manage new types of technology like single-app containers and cloud service APIs, there always seems to be work that doesn’t fit neatly into the approach of modeling and continuously enforcing your desired state. For example, sometimes you just need to deploy point-in-time changes, such as:
- Quickly troubleshooting or deploying a one-off change to individual systems.
- Distributing scripts to run across your infrastructure.
- Automating changes that need to happen in a particular order as part of an application deployment.
- Stopping and restarting services or migrating or upgrading databases where you need to complete tasks sequentially.
The point is, there are any number of tasks that are part of the day-to-day automation you need to do, which might be part of a larger approach to automating your infrastructure but don't conceptually match this idea of model-driven management. So we started picking apart the problem with the goal of building awesome ways to work with these ad hoc tasks, akin to what Puppet does for configuration management.
We’re excited to introduce Puppet Tasks, a family of offerings that include an open source task runner as well as new task management capabilities included in Puppet Enterprise.
Automate ad hoc work with Puppet Tasks
We see Puppet Tasks as complementing Puppet’s model-driven approach to automation by adding the ability to easily execute ad hoc tasks in an imperative way — doing exactly what you tell it, when you tell it to. This is all with the goal of making it simple for you to troubleshoot systems and devices, deploy point-in-time changes, and execute commands in an ordered fashion as part of an application deployment workflow.
Today, Puppet Tasks is available for you in two flavors:
- Bolt: An agentless open source task runner meant to execute imperative, ad hoc tasks for smaller infrastructures. Bolt is a task runner that’s driven through a command line interface (CLI) and executes commands via SSH (Linux) and WinRM (Windows). It’s simple to get started running commands, doesn’t require any agent software or even a scripting runtime on the target devices, and you can bring your own scripts that you’ve written in any language (like Powershell, Bash or Perl).
- Puppet Enterprise Task Management: If you have a large infrastructure spanning multiple teams, Puppet Enterprise Task Management (available in Puppet Enterprise 2017.3) is the way to go. With Task Management, you get the benefits of ad hoc task execution, plus scale, RBAC, audit trails, and team-oriented workflows built right in. You can execute tasks against tens of thousands of servers at once, control who can run which tasks, view audit histories of every action taken on every connected device, and orchestrate task runs directly from your tools of choice: the Puppet Enterprise web UI, HTTPS remote APIs, or the command line. You can use the Puppet Query Language (PQL) to filter your infrastructure and target portions of your environment for task runs based on any attributes or events that Puppet knows about your systems.
Both flavors use the open Puppet Task API, which lets you take scripts you've written and adapt them to become tasks, just by adding some metadata. This allows for greater reuse and enhanced governance across your teams, plus enables inclusion in Puppet modules alongside the 5,000+ available on the Puppet Forge. Additionally, Bolt lets you connect multiple tasks in a sequenced task plan using a simplified version of the Puppet language, so you can connect related tasks together in a programmatic, reusable way. (Enterprise support for task plans will be released in a future Puppet Enterprise release.)
I’m excited to get Puppet Tasks in your hands today and look forward to hearing your feedback on how you like it.
Learn more & get started
- If you’re new to Puppet, you can install Bolt and start automating your tasks now by running:
gem install bolt
(Read the documentation for system requirements and usage information, though.)
- If you’re an existing Puppet Enterprise customer, the new Task Management capabilities are available out of the box to you once you upgrade to our latest version, Puppet Enterprise 2017.3.
- If you’d like to learn more about Puppet Tasks, register for one of our upcoming webinars on Tuesday 7 November at 9 a.m. PT or Thursday 9 November at 4 p.m. PT.
- Ready to learn more about Bolt? Take the online, self-paced class. In less than 10 minutes, you can learn how to run a command, script and task using Bolt.
Eric Sorenson is a director of product management at Puppet.