Help us improve your experience.

Let us know what you think.

Do you have time for a two-minute survey?


Understanding Puppet for Junos OS

Puppet for Junos OS Overview

Puppet is configuration management software that is developed by Puppet. Puppet provides an efficient and scalable solution for managing the configurations of large numbers of devices. System administrators use Puppet to manage the configurations of physical and virtual servers and network devices. Juniper Networks provides support for using Puppet to manage certain devices running the Junos® operating system (Junos OS).

You typically deploy the Puppet software using a client-server arrangement, where the server, or Puppet master, manages one or more agent nodes. The client daemon, or Puppet agent, runs on each of the managed nodes. You create Puppet manifest files to describe your desired system configuration. The Puppet master compiles the manifests into catalogs, and the Puppet agent periodically retrieves the catalog and applies the necessary changes to the configuration.

Table 1 describes the Puppet for Junos OS support components, and Figure 1 illustrates the interaction of the components.

Table 1: Puppet for Junos OS Components



jpuppet package


juniper/puppet-agent Docker container

Package or container that is installed on the agent node running Junos OS and that contains the Puppet agent, the Ruby programming language, and support libraries.

Certain devices running Junos OS have the Puppet agent integrated into the software image and do not require installing a separate package.

netdevops/netdev_stdlib Puppet module

Module that contains generic Puppet type definitions. It does not include any specific provider code.

juniper/netdev_stdlib_junos Puppet module

Module that contains the Junos OS-specific Puppet provider code that implements the types defined in the netdevops/netdev_stdlib module. You install this module on the Puppet master when managing devices running Junos OS.

Ruby gem for NETCONF
(Junos XML API)

Gem that is installed on the Puppet master and is also bundled in the jpuppet package.

Figure 1: Puppet Components for Managing Devices Running Junos OSPuppet Components for Managing Devices Running Junos OS

The netdev_stdlib Puppet module provides Puppet resource types for configuring:

  • Physical interfaces

  • Layer 2 switch ports

  • VLANs

  • Link aggregation groups

The Juniper Networks netdev_stdlib_junos module contains the Junos OS-specific Puppet provider code that implements the resource types defined in the netdev_stdlib module. You install the netdev_stdlib_junos module on the Puppet master to manage devices running Junos OS. Starting with netdev_stdlib_junos module version 2.0.2, the module also provides the apply_group defined resource type, which enables you to manage network resources that do not have type specifications in the netdev_stdlib module.

When using Puppet to manage devices running Junos OS, the Puppet agent makes configuration changes under exclusive lock and logs all commit operations with a Puppet catalog version for audit tracking. Puppet report logs include a Junos OS source indicator for log entries specific to Junos OS processing and tags associated with the operation or error, which enables easy report extraction.

For more information about Puppet, see the Puppet website at

Benefits of Puppet and Puppet for Junos OS

  • Provide an efficient and scalable software solution for managing the configurations of large numbers of devices

  • Enable automatic enforcement of the correct state of a device

  • Increase operational efficiency by automating configuration management tasks and reducing the manual configuration and management of devices

  • Lower the risk and cost of service outages by reducing configuration errors

  • Improve change management processes and provide transparency by logging commit operations with a Puppet catalog version for audit tracking purposes

  • Enable organizations that already use Puppet to manage server resources to extend this to network devices