Ändern der Konfiguration mithilfe von SLAX- und XSLT-Skripten
SLAX- und XSLT-Betriebs- und -Ereignisskripte können die jcs:load-configuration
Vorlage verwenden, um strukturierte Änderungen an der Junos OS-Konfiguration vorzunehmen. Erfahrene Benutzer, die mit Junos OS vertraut sind, können Skripte schreiben, die zur Eingabe der relevanten Konfigurationsinformationen auffordern, und die Konfiguration entsprechend ändern. Auf diese Weise können Benutzer, die weniger Erfahrung mit Junos OS haben, die Konfiguration mithilfe des Skripts sicher ändern.
In diesem Thema wird erläutert, wie die jcs:load-configuration
Vorlage zum Ändern der Konfiguration verwendet wird.
jcs:load-configuration Vorlagenübersicht
Die jcs:load-configuration
Vorlage ist in der Importdatei junos.xsl enthalten. Die Vorlage kann:
Laden Sie Junos XML-Konfigurationsdaten mithilfe eines Vorgangs von
load merge
oderload replace
load override
in die Kandidatenkonfiguration, und übernehmen Sie die ÄnderungenSetzen Sie die aktive Konfiguration auf eine zuvor festgelegte Konfiguration zurück
Laden und Bestätigen der Rettungskonfiguration
Wenn die Vorlage aufgerufen wird, führt sie jcs:load-configuration
die folgenden Aktionen auf dem Zielgerät aus:
Sperrt die Konfigurationsdatenbank
Lädt die Konfigurationsänderungen
Schreibt die Konfiguration fest
Entsperrt die Konfigurationsdatenbank
Die jcs:load-configuration
Vorlage nimmt Änderungen an der Konfiguration im configure exclusive
Modus vor. In diesem Modus sperrt Junos OS die globale Kandidatenkonfiguration, solange das Skript auf die gemeinsam genutzte Datenbank zugreift und Änderungen an der Konfiguration vornimmt. Der Vorlagenaufruf schlägt möglicherweise fehl, wenn die Konfigurationsdatenbank bereits gesperrt ist oder wenn beim Aufruf der Vorlage vorhandene, nicht festgeschriebene Änderungen in der Kandidatenkonfiguration vorhanden sind. Wenn die Vorlage die Konfigurationsdaten erfolgreich lädt, der Commit jedoch fehlschlägt, verwirft Junos OS die nicht festgeschriebenen Änderungen, wenn die Datenbank entsperrt wird.
Die Syntax der SLAX-Vorlage lautet:
call jcs:load-configuration($action="(merge | override | replace)", $commit-options=node-set, $configuration=configuration-data, $connection=connection-handle, $rescue="rescue", $rollback=number);
Die Syntax der XSLT-Vorlage lautet:
<xsl:call-template name="jcs:load-configuration"> <xsl:with-param name="action" select="(merge | override | replace)"/> <xsl:with-param name="commit-options" select="node-set"/> <xsl:with-param name="configuration" select="configuration-data"/> <xsl:with-param name="connection" select="connection-handle"/> <xsl:with-param name="rescue" select=""rescue""/> <xsl:with-param name="rollback" select="number"/> </xsl:call-template>
Sie geben Argumente für die jcs:load-configuration
Vorlage an, um Folgendes anzugeben:
den Verbindungs-Handle zu dem Gerät, an dem die Änderungen vorgenommen werden
die Änderungen, die an der Konfiguration vorgenommen werden müssen,
die Ladeaktion, die definiert, wie die Änderungen in die vorhandene Konfiguration integriert werden sollen
Optionale Commit-Optionen
Sie müssen eine Verbindung mit dem Zielgerät herstellen, bevor Sie die jcs:load-configuration
Vorlage aufrufen. Um eine Verbindung zu einem Gerät herzustellen, rufen Sie die jcs:open()
Funktion mit den erforderlichen Argumenten auf. Legen Sie dann den jcs:load-configuration
connection
Parameter auf das von der jcs:open()
Funktion zurückgegebene Handle fest.
Der folgende Beispielcode stellt eine Verbindung mit dem lokalen Gerät her und ändert die Konfiguration:
var $conn = jcs:open(); var $results := { call jcs:load-configuration($configuration=$config-changes, $connection=$conn); } var $close-results = jcs:close($conn);
Wenn Sie die jcs:load-configuration
Vorlage aufrufen, können Sie den configuration
Parameter zum Laden neuer Konfigurationsdaten auf ein Gerät einschließen, Sie können den rollback
Parameter angeben, um die Konfiguration auf eine zuvor festgelegte Konfiguration zurückzusetzen, oder Sie können den rescue
Parameter angeben, um die Wiederherstellungskonfiguration zu laden und zu bestätigen.
Laden und Bestätigen von Konfigurationsdaten
SLAX- und XSLT-Skripte können die jcs:load-configuration
Vorlage aufrufen, um die Konfiguration zu ändern. Der configuration
Parameter definiert die zu ladenden Junos-XML-Konfigurationsdaten und gibt action
an, wie die Daten geladen werden sollen. Der commit-options
Parameter definiert die Optionen, die während des Commit-Vorgangs verwendet werden sollen.
Das folgende Beispielskript ruft die jcs:load-configuration
Vorlage auf, um die Konfiguration zu ändern und eine Schnittstelle zu deaktivieren. Alle für die jcs:load-configuration
Vorlage erforderlichen Werte werden als Variablen definiert, die dann als Argumente an die Vorlage übergeben werden.
Der :=
Operator kopiert die Ergebnisse des jcs:load-configuration
Vorlagenaufrufs in eine temporäre Variable und führt die node-set
Funktion für diese Variable aus. Der :=
Operator stellt sicher, dass es sich bei der disable-results
Variablen um eine Knotenmenge und nicht um ein Ergebnisstrukturfragment handelt, damit das Skript auf den Inhalt zugreifen kann.
SLAX-Syntax:
version 1.2; 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"; ns ext = "http://xmlsoft.org/XSLT/namespace"; import "../import/junos.xsl"; match / { <op-script-results> { var $interface = jcs:get-input("Enter interface to disable: "); var $config-changes = { <configuration> { <interfaces> { <interface> { <name> $interface; <disable>; } } } } var $load-action = "merge"; var $options := { <commit-options> { <synchronize>; <log> "disabling interface " _ $interface; } } var $conn = jcs:open(); var $results := { call jcs:load-configuration($action=$load-action, $commit-options=$options, $configuration=$config-changes, $connection=$conn); } if ($results//xnm:error) { for-each ($results//xnm:error) { <output> message; } } var $close-results = jcs:close($conn); } }
Ausführliche Informationen zu diesem Skript finden Sie unter Beispiel: Ändern der Konfiguration mithilfe von SLAX- und XSLT-Op-Skripten.
Der entsprechende XSLT-Code für den Aufruf der jcs:load-configuration
Vorlage lautet:
<xsl:variable name="disable-results-temp"> <xsl:call-template name="jcs:load-configuration"> <xsl:with-param name="action" select="$load-action"/> <xsl:with-param name="commit-options" select="$options"/> <xsl:with-param name="configuration" select="$disable"/> <xsl:with-param name="connection" select="$conn"/> </xsl:call-template> </xsl:variable> <xsl:variable xmlns ext="http:xmlsoft.org/XSLT/namespace" \ name="disable-results" select="ext:node-set($disable-results-temp)"/>
Laden und Bestätigen der Wiederherstellungskonfiguration
Mit einer Wiederherstellungskonfiguration können Sie eine bekannte funktionierende Konfiguration oder eine Konfiguration mit einem bekannten Status definieren, die Sie jederzeit wiederherstellen können. SLAX- und XSLT-Skripte können die jcs:load-configuration
Vorlage mit dem rescue
Parameter aufrufen, um die Rettungskonfiguration zu laden, sofern eine vorhanden ist.
Das folgende SLAX-Op-Skript lädt die vorhandene Rettungskonfiguration und überträgt sie.
version 1.2; 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 "/var/db/scripts/import/junos.xsl"; match / { <op-script-results> { /* Open the connection */ var $conn = jcs:open(); /* Load and commit the rescue configuration */ var $results = { call jcs:load-configuration($connection=$conn, $rescue="rescue"); } expr jcs:output($results); /* Close the connection */ expr jcs:close($conn); } }
Das entsprechende XSLT-Skript lautet:
<?xml version="1.0" standalone="yes"?> <xsl:stylesheet 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" version="1.0"> <xsl:import href="/var/db/scripts/import/junos.xsl"/> <xsl:template match="/"> <op-script-results> <!-- Open the connection --> <xsl:variable name="conn" select="jcs:open()"/> <!-- Load and commit the rescue configuration --> <xsl:variable name="results"> <xsl:call-template name="jcs:load-configuration"> <xsl:with-param name="connection" select="$conn"/> <xsl:with-param name="rescue" select=""rescue""/> </xsl:call-template> </xsl:variable> <xsl:value-of select="jcs:output($results)"/> <!-- Close the connection --> <xsl:value-of select="jcs:close($conn)"/> </op-script-results> </xsl:template> </xsl:stylesheet>
Zurücksetzen der Konfiguration
SLAX- und XSLT-Skripte können die jcs:load-configuration
Vorlage mit dem rollback
Parameter aufrufen, um die Konfiguration auf eine zuvor festgelegte Konfiguration zurückzusetzen. Das folgende SLAX-Op-Skript fordert zur Eingabe der Rollback-Nummer auf, lädt dann die angeforderte Rollback-Konfiguration und führt einen Commit aus.
version 1.2; 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 / { <op-script-results> { var $rollback_id = jcs:get-input("Rollback id: "); /* Open the connection */ var $conn = jcs:open(); /* Roll back the configuration and commit it */ var $results = { call jcs:load-configuration($connection=$conn, $rollback=$rollback_id); } /* Close the connection */ expr jcs:close($conn); } }
user@host> op load-rollback Rollback id: 1