salt.modules.junos

Module to interact with Junos devices.

maturity:new
dependencies:junos-eznc, jxmlease

Note

Those who wish to use junos-eznc (PyEZ) version >= 2.1.0, must use the latest salt code from github until the next release.

Refer to junos for information on connecting to junos proxy.

salt.modules.junos.cli(*args, **kwargs)

Executes the CLI commands and returns the output in specified format. (default is text) The output can also be stored in a file.

command (required)
The command to execute on the Junos CLI
format
: text
Format in which to get the CLI output (either text or xml)
dev_timeout
: 30
The NETCONF RPC timeout (in seconds)
dest
Destination file where the RPC output is stored. Note that the file will be stored on the proxy minion. To push the files to the master use cp.push.

CLI Examples:

salt 'device_name' junos.cli 'show system commit'
salt 'device_name' junos.cli 'show system alarms' format=xml dest=/home/user/cli_output.txt
salt.modules.junos.commit(*args, **kwargs)

To commit the changes loaded in the candidate configuration.

dev_timeout
: 30
The NETCONF RPC timeout (in seconds)
comment
Provide a comment for the commit
confirm
Provide time in minutes for commit confirmation. If this option is specified, the commit will be rolled back in the specified amount of time unless the commit is confirmed.
sync
: False
When True, on dual control plane systems, requests that the candidate configuration on one control plane be copied to the other control plane, checked for correct syntax, and committed on both Routing Engines.
force_sync
: False
When True, on dual control plane systems, force the candidate configuration on one control plane to be copied to the other control plane.
full
When True, requires all the daemons to check and evaluate the new configuration.
detail
When True, return commit detail

CLI Examples:

salt 'device_name' junos.commit comment='Commiting via saltstack' detail=True
salt 'device_name' junos.commit dev_timeout=60 confirm=10
salt 'device_name' junos.commit sync=True dev_timeout=90
salt.modules.junos.commit_check()

Perform a commit check on the configuration

CLI Example:

salt 'device_name' junos.commit_check
salt.modules.junos.diff(**kwargs)

Returns the difference between the candidate and the current configuration

id
: 0
The rollback ID value (0-49)

CLI Example:

salt 'device_name' junos.diff 3
salt.modules.junos.facts()

Displays the facts gathered during the connection. These facts are also stored in Salt grains.

CLI Example:

salt 'device_name' junos.facts
salt.modules.junos.facts_refresh()

Reload the facts dictionary from the device. Usually only needed if, the device configuration is changed by some other actor. This function will also refresh the facts stored in the salt grains.

CLI Example:

salt 'device_name' junos.facts_refresh
salt.modules.junos.file_copy(src=None, dest=None)

Copies the file from the local device to the junos device

src
The source path where the file is kept.
dest
The destination path on the where the file will be copied

CLI Example:

salt 'device_name' junos.file_copy /home/m2/info.txt info_copy.txt
salt.modules.junos.get_table(table, table_file, path=None, target=None, key=None, key_items=None, filters=None, template_args=None)

Retrieve data from a Junos device using Tables/Views

table (required)
Name of PyEZ Table
table_file (required)
YAML file that has the table specified in table parameter
path:
Path of location of the YAML file. defaults to op directory in jnpr.junos.op
target:
if command need to run on FPC, can specify fpc target
key:
To overwrite key provided in YAML
key_items:
To select only given key items
filters:
To select only filter for the dictionary from columns
template_args:
key/value pair which should render Jinja template command

CLI Example:

salt 'device_name' junos.get_table
salt.modules.junos.install_config(*args, **kwargs)

Installs the given configuration file into the candidate configuration. Commits the changes if the commit checks or throws an error.

path (required)
Path where the configuration/template file is present. If the file has a .conf extension, the content is treated as text format. If the file has a .xml extension, the content is treated as XML format. If the file has a .set extension, the content is treated as Junos OS set commands.
mode
: exclusive
The mode in which the configuration is locked. Can be one of private, dynamic, batch, exclusive.
dev_timeout
: 30
Set NETCONF RPC timeout. Can be used for commands which take a while to execute.
overwrite
: False
Set to True if you want this file is to completely replace the configuration file.
replace
: False
Specify whether the configuration file uses replace: statements. If True, only those statements under the replace tag will be changed.
format
Determines the format of the contents
update
: False
Compare a complete loaded configuration against the candidate configuration. For each hierarchy level or configuration object that is different in the two configurations, the version in the loaded configuration replaces the version in the candidate configuration. When the configuration is later committed, only system processes that are affected by the changed configuration elements parse the new configuration. This action is supported from PyEZ 2.1.
comment
Provide a comment for the commit
confirm
Provide time in minutes for commit confirmation. If this option is specified, the commit will be rolled back in the specified amount of time unless the commit is confirmed.
diffs_file
Path to the file where the diff (difference in old configuration and the committed configuration) will be stored. Note that the file will be stored on the proxy minion. To push the files to the master use cp.push.
template_vars

Variables to be passed into the template processing engine in addition to those present in pillar, the minion configuration, grains, etc. You may reference these variables in your template like so:

{{ template_vars["var_name"] }}

CLI Examples:

salt 'device_name' junos.install_config 'salt://production/network/routers/config.set'
salt 'device_name' junos.install_config 'salt://templates/replace_config.conf' replace=True comment='Committed via SaltStack'
salt 'device_name' junos.install_config 'salt://my_new_configuration.conf' dev_timeout=300 diffs_file='/salt/confs/old_config.conf' overwrite=True
salt 'device_name' junos.install_config 'salt://syslog_template.conf' template_vars='{"syslog_host": "10.180.222.7"}'
salt.modules.junos.install_os(*args, **kwargs)

Installs the given image on the device. After the installation is complete the device is rebooted, if reboot=True is given as a keyworded argument.

path (required)
Path where the image file is present on the proxy minion
remote_path :
If the value of path is a file path on the local (Salt host's) filesystem, then the image is copied from the local filesystem to the :remote_path: directory on the target Junos device. The default is /var/tmp. If the value of :path: or is a URL, then the value of :remote_path: is unused.
dev_timeout
: 30
The NETCONF RPC timeout (in seconds). This argument was added since most of the time the "package add" RPC takes a significant amount of time. The default RPC timeout is 30 seconds. So this :timeout: value will be used in the context of the SW installation process. Defaults to 30 minutes (30*60=1800)
reboot
: False
Whether to reboot after installation
no_copy
: False
If True the software package will not be SCP’d to the device
bool validate:
When True this method will perform a config validation against the new image
bool issu:
When True allows unified in-service software upgrade (ISSU) feature enables you to upgrade between two different Junos OS releases with no disruption on the control plane and with minimal disruption of traffic.
bool nssu:
When True allows nonstop software upgrade (NSSU) enables you to upgrade the software running on a Juniper Networks EX Series Virtual Chassis or a Juniper Networks EX Series Ethernet Switch with redundant Routing Engines with a single command and minimal disruption to network traffic.

CLI Examples:

salt 'device_name' junos.install_os 'salt://images/junos_image.tgz' reboot=True
salt 'device_name' junos.install_os 'salt://junos_16_1.tgz' dev_timeout=300
salt.modules.junos.load(path=None, **kwargs)

Loads the configuration from the file provided onto the device.

path (required)
Path where the configuration/template file is present. If the file has a .conf extension, the content is treated as text format. If the file has a .xml extension, the content is treated as XML format. If the file has a .set extension, the content is treated as Junos OS set commands.
overwrite
: False
Set to True if you want this file is to completely replace the configuration file.
replace
: False
Specify whether the configuration file uses replace: statements. If True, only those statements under the replace tag will be changed.
format
Determines the format of the contents
update
: False
Compare a complete loaded configuration against the candidate configuration. For each hierarchy level or configuration object that is different in the two configurations, the version in the loaded configuration replaces the version in the candidate configuration. When the configuration is later committed, only system processes that are affected by the changed configuration elements parse the new configuration. This action is supported from PyEZ 2.1.
template_vars

Variables to be passed into the template processing engine in addition to those present in pillar, the minion configuration, grains, etc. You may reference these variables in your template like so:

{{ template_vars["var_name"] }}

CLI Examples:

salt 'device_name' junos.load 'salt://production/network/routers/config.set'

salt 'device_name' junos.load 'salt://templates/replace_config.conf' replace=True

salt 'device_name' junos.load 'salt://my_new_configuration.conf' overwrite=True

salt 'device_name' junos.load 'salt://syslog_template.conf' template_vars='{"syslog_host": "10.180.222.7"}'
salt.modules.junos.lock()

Attempts an exclusive lock on the candidate configuration. This is a non-blocking call.

Note

When locking, it is important to remember to call junos.unlock once finished. If locking during orchestration, remember to include a step in the orchestration job to unlock.

CLI Example:

salt 'device_name' junos.lock
salt.modules.junos.ping(*args, **kwargs)

Send a ping RPC to a device

dest_ip
The IP of the device to ping
dev_timeout
: 30
The NETCONF RPC timeout (in seconds)
rapid
: False
When True, executes ping at 100pps instead of 1pps
ttl
Maximum number of IP routers (IP hops) allowed between source and destination
routing_instance
Name of the routing instance to use to send the ping
interface
Interface used to send traffic
count
: 5
Number of packets to send

CLI Examples:

salt 'device_name' junos.ping '8.8.8.8' count=5
salt 'device_name' junos.ping '8.8.8.8' ttl=1 rapid=True
salt.modules.junos.rollback(*args, **kwargs)

Roll back the last committed configuration changes and commit

id
: 0
The rollback ID value (0-49)
dev_timeout
: 30
The NETCONF RPC timeout (in seconds)
comment
Provide a comment for the commit
confirm
Provide time in minutes for commit confirmation. If this option is specified, the commit will be rolled back in the specified amount of time unless the commit is confirmed.
diffs_file
Path to the file where the diff (difference in old configuration and the committed configuration) will be stored. Note that the file will be stored on the proxy minion. To push the files to the master use cp.push.

CLI Example:

salt 'device_name' junos.rollback 10
salt.modules.junos.rpc(*args, **kwargs)

This function executes the RPC provided as arguments on the junos device. The returned data can be stored in a file.

cmd
The RPC to be executed
dest
Destination file where the RPC output is stored. Note that the file will be stored on the proxy minion. To push the files to the master use cp.push.
format
: xml
The format in which the RPC reply is received from the device
dev_timeout
: 30
The NETCONF RPC timeout (in seconds)
filter
Used with the get-config RPC to get specific configuration
terse
: False
Amount of information you want
interface_name
Name of the interface to query

CLI Example:

salt 'device' junos.rpc get_config /var/log/config.txt format=text filter='<configuration><system/></configuration>'
salt 'device' junos.rpc get-interface-information /home/user/interface.xml interface_name='lo0' terse=True
salt 'device' junos.rpc get-chassis-inventory
salt.modules.junos.set_hostname(*args, **kwargs)

Set the device's hostname

hostname
The name to be set
comment
Provide a comment to the commit
dev_timeout
: 30
The NETCONF RPC timeout (in seconds)
confirm
Provide time in minutes for commit confirmation. If this option is specified, the commit will be rolled back in the specified amount of time unless the commit is confirmed.

CLI Example:

salt 'device_name' junos.set_hostname salt-device
salt.modules.junos.shutdown(**kwargs)

Shut down (power off) or reboot a device running Junos OS. This includes all Routing Engines in a Virtual Chassis or a dual Routing Engine system.

Note

One of shutdown or reboot must be set to True or no action will be taken.

shutdown
: False
Set this to True if you want to shutdown the machine. This is a safety mechanism so that the user does not accidentally shutdown the junos device.
reboot
: False
If True, reboot instead of shutting down
at
Used when rebooting, to specify the date and time the reboot should take place. The value of this option must match the JunOS CLI reboot syntax.
in_min
Used when shutting down. Specify the delay (in minutes) before the device will be shut down.

CLI Examples:

salt 'device_name' junos.shutdown reboot=True
salt 'device_name' junos.shutdown shutdown=True in_min=10
salt 'device_name' junos.shutdown shutdown=True
salt.modules.junos.timeoutDecorator(function)
salt.modules.junos.unlock()

Unlocks the candidate configuration.

CLI Example:

salt 'device_name' junos.unlock
salt.modules.junos.zeroize()

Resets the device to default factory settings

CLI Example:

salt 'device_name' junos.zeroize