Create a Commit Script Macro to Read the Custom Syntax and Generate Related Configuration Statements
Commit script macros enable you to expand custom configuration
syntax into standard Junos OS configuration statements. By itself,
the custom syntax in an apply-macro
statement has no operational
impact on the device. To give meaning to your syntax, there must be
a corresponding commit script that uses the syntax as data for generating
related Junos OS statements.
To write such a script:
- At the start of the script, include the appropriate commit
script boilerplate from Required Boilerplate for Commit Scripts. It is reproduced here for convenience:XSLT Boilerplate
SLAX Boilerplate<?xml version="1.0" standalone="yes"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:junos="http://xml.juniper.net/junos/*/junos" xmlns:xnm="http://xml.juniper.net/xnm/1.1/xnm" xmlns:jcs="http://xml.juniper.net/junos/commit-scripts/1.0"> <xsl:import href="../import/junos.xsl"/> <xsl:template match="configuration"> <!-- ... insert your code here ... --> </xsl:template> </xsl:stylesheet>
Python Boilerplateversion 1.0; ns junos = "http://xml.juniper.net/junos/*/junos"; ns xnm = "http://xml.juniper.net/xnm/1.1/xnm"; ns jcs = "http://xml.juniper.net/junos/commit-scripts/1.0"; import "../import/junos.xsl"; match configuration { /* * insert your code here */ }
from junos import Junos_Configuration import jcs if __name__ == '__main__': # insert your code here
- At the position indicated by the comment “insert your code here,” include programming instructions
that inspect the configuration for the
apply-macro
statement at a specified hierarchy level and change the configuration to include standard Junos OS syntax.For an example that uses both types of instructions and includes a line-by-line analysis of the XSLT syntax, see Example: Creating Custom Configuration Syntax with Commit Script Macros.
- Save the script with a meaningful name.
- Copy the script to either the /var/db/scripts/commit directory on the hard disk or the /config/scripts/commit directory on the flash drive.
For information about setting the storage location for commit scripts, see Store and Enable Junos Automation Scripts and Store Scripts in Flash Memory.
- Enable the script by configuring the
file filename
statement at the[edit system scripts commit]
hierarchy level.[edit system scripts] user@host# set commit file filename
-
If the script generates transient changes, configure the
allow-transients
statement.Configure the statement at the
[edit system scripts commit]
hierarchy level to enable all commit scripts to make transient changes.[edit system scripts] user@host# set commit allow-transients
Alternatively, on supported devices and releases, configure the statement at the
[edit system scripts commit file filename]
hierarchy level to enable only the individual script to make transient changes.[edit system scripts] user@host# set commit file filename allow-transients
- If the script is written in Python, enable the execution
of unsigned Python scripts.
[edit system scripts] user@host# set language (python | python3)
- Commit the configuration.
[edit system scripts] user@host# commit and-quit
If all the commit scripts run without errors, any persistent changes are loaded into the candidate configuration, and any transient changes are loaded into the checkout configuration, but not to the candidate configuration. The commit process then continues by validating the configuration and propagating changes to the affected processes on the device running Junos OS.