Published on 9 October 2018 by

When we shipped the Puppet Bolt beta last year, we sought out new ways to reduce the time it took for teams to automate infrastructure management and operation. We learned that different teams have different skill sets, and automation should be about starting where you are and building on what you know.

According to our recent State of DevOps Report, many companies embark on their DevOps journeys by building a strong foundation, normalizing the technology stack, and standardizing and reducing variability (stages zero through two). At the core of these foundational steps should be automation tools that promote this type of DevOps growth. Our tool of choice: Puppet Bolt.

What we’ve learned from our research and through our successful customers and users is that the value of automation lies in its ability to help teams move faster, with fewer errors and less overhead. We took this to heart as we improved on Puppet Bolt over the year, and now we’re proud to announce version 1.0.

This update includes features based on community feedback, extensions to utilize the 5,000+ modules on the Puppet Forge, a stabilized plan language, and more. Puppet Bolt 1.0 is here and we want you all to check it out.

What’s Puppet Bolt?

Puppet Bolt is an open source, agentless multi-platform automation tool that reduces your time to automation and makes it easier to get started with DevOps. Puppet Bolt makes automation much more accessible without requiring any Puppet knowledge, agents, or master. It uses SSH or WinRM to communicate and execute tasks on remote systems.

Your teams can perform various tasks like starting and stopping services, rebooting remote systems, and gathering packages and systems facts from your workstation or laptop on any platform (Linux and Windows).

Today’s release enables Bolt users to take advantage of more than 5,000 modules available in the Puppet Forge for everything from deploying database servers to setting up Docker or Kubernetes. With Puppet Bolt you can reuse existing scripts in Bash, PowerShell, Python or any other language.

Community-driven development

Bolt 1.0 is built based on the feedback we’ve heard from you all. We’ve worked out the kinks, smoothed out the edges, and we’re making things easier for you to get started with automation.

We get a lot of feedback from our users that installing from a gem is not ideal. We now have packages for your favorite providers which make installing Puppet Bolt as easy as yum install puppet-bolt, or installing from a MSI. Agility is at the core of many practitioners’ day jobs, so we've worked on speeding up and scaling our transports. Our users who have switched over from other tools have said its cut down deployment times in half!

We’re increasingly adding to the functionality and power of tasks, most recently with the addition of cross-platform tasks. This feature gives users the capability to have multiple implementations of a task and lets Puppet Bolt choose the right one based on the target platform. It’s perfect for when you might have an install task that is running bash on Linux and PowerShell on Windows — Puppet Bolt will run the right implementation without you having to think about it.

{
  "implementations": [
    {"name": "sql_linux.sh", "requirements": ["shell"]},
    {"name": "sql_windows.ps1", "requirements": ["powershell"]}
  ]
}

Last year, we shipped Puppet Bolt task plans as a beta and learned quite a bit from that. As of today, plans are now stable and allow for sophisticated orchestration across your environment. We've added improvements such as flexible error handling, complex interstep dependency support, and better logging for thorough reporting.

We have users running Puppet Bolt across tens of thousands of nodes so we know we need to make managing your infrastructure a tad bit easier. To do this, we've added an inventory file to manage nodes, groups of nodes, cloud endpoints, and all the credentials needed to connect. For those of you already using PuppetDB, we've built an integration to just use PQL and target those nodes.

Reducing your time to automation

Puppet Bolt allows your teams to get started with infrastructure automation with no prerequisites or prior Puppet knowledge. For teams already using scripts to automate provisioning and management of existing nodes, Puppet Bolt enables you to move a step further. Build shareable tasks and leveraging existing modules on the Puppet Forge from your own workstation or laptop to take your infrastructure automation even further.

The apply function

Use the bolt apply function to apply blocks of Puppet code (manifest blocks) that declaratively describe the state of a target on a group of remote nodes from the command line. This lets you manage the state of your resources on a one-off basis on one remote system. Bolt’s apply function is a great way to get started with Puppet code without any prior knowledge of Puppet. Expand and scale this operation across your application stack using a Bolt plan.

plan profiles::nginx_install(
  TargetSpec $nodes,
  String $site_content = 'hello!',
) {
  # Install puppet on the target and gather facts
  $nodes.apply_prep

  # Compile the manifest block into a catalog 
  apply($nodes) {
    package { 'nginx':
      ensure => present,
    }

    file { '/var/www/html/index.html':
      content => $site_content,
      ensure  => file,
    }

    service { 'nginx':
      ensure  => 'running',
      enable  => 'true',
      require => Package['nginx'],
    }
  }
}

For an example of how to use a Bolt plan for a masterless install, see this blog post.

Use tasks to discover and take action

The next step in your journey to automation depends on what you want to achieve.

If you want to discover more resources living in your infrastructure, we invite you to try Puppet Discovery™ (which is also agentless and lightweight). This tool allows you to discover your resources and make one-off changes on them using tasks or enforce configuration management on them installing a Puppet agent, and all via the same user interface.

If you just want to have more control over your infrastructure, you can start using Puppet Enterprise running tasks on nodes over SSH and WinRM with RBAC and logging in the console. In this way, you can quickly move from one-off management of the state of your resources to ongoing state management that is more suitable for some use cases — for instance, for security and compliance purposes.

Note: We’re also releasing updates to Puppet Discovery and Puppet Enterprise today.

These capabilities make Puppet Bolt a great tool to start with or expand your automation footprints to move to a more mature, enterprise approach.

Enterprise quality for open source users

Puppet Bolt 1.0 is accessible as an open source tool, and built with enterprise-class requirements in mind. Our new version includes stable API functionality out of the box and increased reliability throughout the product.

Puppet Bolt 1.0 is available now

We’re excited to announce full availability of Puppet Bolt 1.0 to all our users, both open source and enterprise. We’re including full support for Puppet Bolt for our Puppet Enterprise customers.

What are you waiting for? Get started with infrastructure automation today.

Or learn more about other releases and updates we’ve announced:

Yasmin Rajabi is a senior product manager at Puppet.

Share via:
Posted in:
Tagged:
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.