Ä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 mergeoderload replaceload overridein 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