Published on 11 October 2017 by

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.

Puppet Enterprise Task Management setup

Puppet Enterprise Task Management job

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.)

Eric Sorenson is a director of product management at Puppet.

Share via:
Posted in:

Task Management is in PE 2017.3 but what is the oldest version of PE that the new bolt feature can run on?

Yes, I know I really need to update (still on 2015.2) but it have to wait until after the coming holidays.


Are there plans in future releases of PE to allow for exporting Task runs to a CSV file? In our environment it is sometimes necessary to show management the results of a run.




Just started to use Task manager and find it really useful. However I do not find a way to export the result from the job. Is that possible in any way?




   when a puppet task is created with a API call, is there a way to subscribe to a job result. Currently it seems, only way is to keep polling on task job result to check if the job is completed. This approach is looking ugly in client side as when u have to keep polling and there are 100s of job running.

Appreciate your help.



Hi Sachin, currently we do not implement callbacks of the kind you are describing. One workaround is to use Bolt with the PCP transport, which talks to the orchestration service API, and wait for the process to complete.



The content of this field is kept private and will not be shown publicly.

Restricted HTML

  • Allowed HTML tags: <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Lines and paragraphs break automatically.
  • Web page addresses and email addresses turn into links automatically.